我已经使用了数十次这个过程,突然间它不起作用。
我通过致电
添加了新的迁移dotnet ef migrations add [migration name] --context [context name]
它照常创建了迁移文件。没有什么奇怪的-只创建几个表。我的主要方法是
public static void Main(string[] args)
{
BuildWebHost(args).MigrateDatabase().Run();
}
MigrateDatabase()看起来像
public static IWebHost MigrateDatabase(this IWebHost webHost)
{
var serviceScopeFactory = (IServiceScopeFactory)webHost.Services.GetService(typeof(IServiceScopeFactory));
using (var scope = serviceScopeFactory.CreateScope())
{
var services = scope.ServiceProvider;
var dbContext = services.GetRequiredService<[ContextName]>();
dbContext.Database.Migrate();
}
return webHost;
}
通常,这将在启动时应用所有更改,或者在迁移出现问题时引发异常。这次它正常启动,但不应用迁移。数据库中没有更改,并且_EFMigrationsHistory不列出新迁移。就像迁移文件不存在一样,除了它。
编辑:我添加了另一个迁移。一个空的-实际上只是称为“ testmigration”添加迁移。其中没有任何内容,但是在启动服务时,正如我通常期望的那样,两个迁移都已应用。
我仍然很欣赏为什么会发生这种情况。仅存在真正的迁移,我就多次重启了服务,包括重启了VS。