【发布时间】:2023-03-21 06:40:01
【问题描述】:
我的问题是我正在尝试用数据植入 Entity Framework Core 数据库,在我看来,下面的代码显示了工作。我意识到这不应该在ApplicationDbContext 构造函数中调用,而应该从startup 调用,但我不知道该怎么做。
编辑:基于Ketrex提供的解决方案,我的解决方案如下:
Startup.cs:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.ApplicationServices.GetRequiredService<ApplicationDbContext>().Seed();
}
种子扩展:
public static class DbContextExtensions
{
public static void Seed(this ApplicationDbContext context)
{
// Perform database delete and create
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
// Perform seed operations
AddCountries(context);
AddAreas(context);
AddGrades(context);
AddCrags(context);
AddClimbs(context);
// Save changes and release resources
context.SaveChanges();
context.Dispose();
}
private static void AddCountries(ApplicationDbContext context)
{
context.AddRange(
new Country { Name = "England", Code = "En" },
new Country { Name = "France", Code = "Fr" }
);
}
...
}
我知道为数据库播种在 Entity Framework 的优先级列表中非常高,但如果有一些关于如何完成这项琐碎任务或至少提供临时解决方法的文档,那就太好了。如果有人可以就如何做到这一点提供一些指导,将不胜感激。我觉得我已经接近解决方案,但无法将其拼凑起来。
感谢您的帮助。
【问题讨论】:
标签: c# asp.net-core entity-framework-core asp.net-core-1.0