gpt4 book ai didi

entity-framework - Entity Framework Core 2.0 - 逐步运行迁移

转载 作者:行者123 更新时间:2023-12-03 02:13:22 24 4
gpt4 key购买 nike

在 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);
}
}

最佳答案

您可以使用GetPendingMigrations DatabaseFacade 类的扩展方法(由 DbContextDatabase 属性返回)来获取待处理迁移名称的列表。

然后可以获得 IMigrator服务与使用Migrate传递每个目标迁移名称的方法:

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;

DbContext db = ...;
var pendingMigrations = db.Database.GetPendingMigrations().ToList();
if (pendingMigrations.Any())
{
var migrator = db.Database.GetService<IMigrator>();
foreach (var targetMigration in pendingMigrations)
migrator.Migrate(targetMigration);
}

关于entity-framework - Entity Framework Core 2.0 - 逐步运行迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45780598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com