1.Entity Framework Core

1.新建模型

右键单击Models文件夹-添加-名称单数Movie.cs

2.安装依赖包

工具菜单中选择NuGet 包管理器程序包管理器控制台 (PMC)

Install-Package Microsoft.EntityFrameworkCore.Design
Install-Package Microsoft.EntityFrameworkCore.SqlServer

3.新搭建基架的项目

右键单击Controllers文件夹-添加新搭建基架的项目MVC 控制器(带视图和使用Entity Framework)添加

依次选择模型类数据上下文类添加

4.数据库迁移

Add-Migration InitialCreate
Update-Database

默认情况下,SQL Server Express LocalDB会在 C:/用户/Administrator 目录下创建 .mdf 文件。

5.添加字段

首先将 Rating 属性添加到 Models/Movie.cs

public string? Rating { get; set; }

然后Ctrl+Shift+B构建应用,更新属性绑定列表。

[Bind("Id,Title,ReleaseDate,Genre,Price,Rating")]

紧接着更新视图模板和更新 SeedData 类。

最后迁移更新数据库架构,名称“Rating”是任意的,为迁移文件使用有意义的名称是有帮助的。

Add-Migration Rating
Update-Database

6.设定数据库种子

在 Program.cs 中添加种子初始值设定项代码。

using MvcMovie.Models;

var app = builder.Build();

using (var scope = app.Services.CreateScope())
{
    var services = scope.ServiceProvider;

    SeedData.Initialize(services);
}

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

右键单击Models文件夹-添加-名称SeedData.cs

如果数据库中有任何电影,则不会添加任何电影并返回到种子初始值设定项处。

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;

namespace MvcMovie.Models
{
    public static class SeedData
    {
        public static void Initialize(IServiceProvider serviceProvider)
        {
            using (var context = new MvcMovieContext(
                serviceProvider.GetRequiredService<
                    DbContextOptions<MvcMovieContext>>()))
            {
                // Look for any movies.
                if (context.Movie.Any())
                {
                    return;   // DB has been seeded
                }

                context.Movie.AddRange(
                    new Movie
                    {
                        Title = "When Harry Met Sally",
                        ReleaseDate = DateTime.Parse("1989-2-12"),
                        Genre = "Romantic Comedy",
                        Price = 7.99M
                    },

                    new Movie
                    {
                        Title = "Ghostbusters ",
                        ReleaseDate = DateTime.Parse("1984-3-13"),
                        Genre = "Comedy",
                        Price = 8.99M
                    },

                    new Movie
                    {
                        Title = "Ghostbusters 2",
                        ReleaseDate = DateTime.Parse("1986-2-23"),
                        Genre = "Comedy",
                        Price = 9.99M
                    },

                    new Movie
                    {
                        Title = "Rio Bravo",
                        ReleaseDate = DateTime.Parse("1959-4-15"),
                        Genre = "Western",
                        Price = 3.99M
                    }
                );
                context.SaveChanges();
            }
        }
    }
}

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/entityframeworkcore/14607.html

(0)
上一篇 2022年5月4日 01:19
下一篇 2022年5月5日 01:20

发表评论

登录后才能评论