1.使用以下代码在 Models 文件夹中创建一个名为 SeedData 的新类:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;using System;using System.Linq;namespace RazorPagesMovie.Models
{ public static class SeedData { public static void Initialize(IServiceProvider serviceProvider) { using (var context = new RazorPagesMovieContext( serviceProvider.GetRequiredService< DbContextOptions<RazorPagesMovieContext>>())) { // 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(); } } }}2.添加种子初始值设定项
在 Program.cs 中,修改 Main 方法以执行以下操作:
从依赖关系注入容器获取数据库上下文实例。调用 seed 方法,并将上下文传递给它。Seed 方法完成时释放上下文。下面的代码显示更新后的 Program.cs 文件。using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Logging;using RazorPagesMovie.Models;using System;using Microsoft.EntityFrameworkCore;namespace RazorPagesMovie
{ public class Program { public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build();using (var scope = host.Services.CreateScope())
{ var services = scope.ServiceProvider;try
{ var context=services. GetRequiredService<RazorPagesMovieContext>(); context.Database.Migrate(); SeedData.Initialize(services); } catch (Exception ex) { var logger = services.GetRequiredService<ILogger<Program>>(); logger.LogError(ex, "An error occurred seeding the DB."); } }host.Run();
}public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }}