在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);
}
}
答案 0 :(得分:6)
您可以使用DatabaseFacade
类的GetMigrations扩展方法(由Database
的{{1}}属性返回)来获取待处理迁移名称的列表。< / p>
然后,您可以获取IMigrator
服务并使用Migrate
方法传递每个目标迁移名称:
DbContext