实体框架核心2.0 - 逐步运行迁移

时间:2017-08-20 09:31:19

标签: entity-framework ef-migrations entity-framework-core

在EF6中,我可以检索迁移并​​逐步运行 有没有办法在EF Core中做类似的事情?

EF 6代码

public static void RunMigration(this DbContext context, DbMigration migration, string providerName, string manifest)
{
    var prop = migration.GetType().GetProperty("Operations", BindingFlags.NonPublic | BindingFlags.Instance);
    if (prop != null)
    {
        IEnumerable<MigrationOperation> operations = prop.GetValue(migration) as IEnumerable<MigrationOperation>;
        MigrationSqlGenerator generator = (new DbMigrationsConfiguration()).GetSqlGenerator(providerName);
        var statements = generator.Generate(operations, manifest);
        foreach (MigrationStatement item in statements)
            context.Database.ExecuteSqlCommand(item.Sql);
    }
}

1 个答案:

答案 0 :(得分:6)

您可以使用DatabaseFacade类的GetMigrations扩展方法(由Database的{​​{1}}属性返回)来获取待处理迁移名称的列表。< / p>

然后,您可以获取IMigrator服务并使用Migrate方法传递每个目标迁移名称:

DbContext