我正在使用 .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();}
2 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
好的!我找到了原因。在 Main 方法中,当我创建一个类型为 Province 的新实体时,为其键参数赋值会导致错误。这解决了这个问题:
context.Provinces.Add(new Models.Province
{
//ID = 1,
Name = "TEST"
});
但是我真的很生气,因为抛出的异常没有显示真正的错误!
- 2 回答
- 0 关注
- 148 浏览
添加回答
举报
0/150
提交
取消