【发布时间】:2018-05-07 12:58:23
【问题描述】:
【问题讨论】:
-
当前出现错误...那么错误是什么?如果迁移和播种并行运行,您希望它们如何工作?这几乎肯定会破坏事情。
【问题讨论】:
无论如何,它的价值 migrations 不使用 EnsureCreatedAsync 运行,它在 EFCore 的文档中以真正的大粗体字母显示,也可以在你的种子方法中绕过这个运行 EnsureDeletedAsync(无论如何测试对吗?)。然后运行Database.MigrateAsync();
https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/#applying-migrations-at-runtime
所以……
编辑
//example method
public void Seed(IApplicationBuilder app)
{
using(var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = servicescope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
context.Database.Migrate();
if(!context.SomeTable.Any()){
foreach(var item in SeedData.Items){
context.SomeTable.Add(item);
}
context.SaveChanges();
}
//for each table you need seeded data...
//...
}
}
【讨论】:
if(!_context.SomeTable.Any()) 循环通过种子数据进行检查,例如