Database.Migrate()忽略新创建的迁移

时间:2019-08-08 08:27:36

标签: entity-framework-core ef-migrations

我已经使用了数十次这个过程,突然间它不起作用。

我通过致电

添加了新的迁移
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。

0 个答案:

没有答案