我正在使用 .net core 2 和 entityframework 6.2。我正在尝试使用一些需要的基础数据为数据库做种子。
我没有找到 Database.SetInitializer 方法。所以我用谷歌搜索并找到了另一种在类的Main
方法中为我的数据库播种的方法Program
(如下所示)。
我使用下面的代码来播种我的数据库,但是在执行SaveChange
方法时DbContext
,总是出现 NullReferenceException 错误。
我使用的数据库与 Identity 使用的数据库相同。会影响结果吗?
程序类:
public class Program
{
public static void Main(string[] args)
{
//BuildWebHost(args).Run();
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<ApplicationDbContext>();
context.Provinces.Add(new Models.Province
{
ID = 1,
Name = "TEST"
});
context.SaveChanges(); // <= ERROR
//DbInitializer.Initialize(context);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occured while seeding the database.");
}
}
host.Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
繁花不似锦
相关分类