Entity framework 显示挂起的代码自动迁移

Entity framework 显示挂起的代码自动迁移,entity-framework,ef-code-first,entity-framework-6,entity-framework-migrations,Entity Framework,Ef Code First,Entity Framework 6,Entity Framework Migrations,背景 我们在一个地理分布的团队中工作。每隔一段时间,世界另一端的团队就会为集成服务器创建一个构建,但由于 无法更新数据库以匹配当前模型,因为存在挂起的更改,并且禁用了自动迁移。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将DbMigrationsConfiguration.AutomaticMiggrationsEnabled设置为true以启用自动迁移 我们使用基于代码的迁移 为了简化故障排除,我正在寻找一种方法来显示如果允许从代码进行自动迁移,将应用哪些自动迁移。出现问题的integr

背景

我们在一个地理分布的团队中工作。每隔一段时间,世界另一端的团队就会为集成服务器创建一个构建,但由于

无法更新数据库以匹配当前模型,因为存在挂起的更改,并且禁用了自动迁移。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将DbMigrationsConfiguration.AutomaticMiggrationsEnabled设置为true以启用自动迁移

我们使用基于代码的迁移

为了简化故障排除,我正在寻找一种方法来显示如果允许从代码进行自动迁移,将应用哪些自动迁移。出现问题的integration server上不存在编写新迁移脚本的环境

尝试的解决方案

我尝试使用DbMigrator,但这似乎只显示尚未应用的基于代码的迁移

问题


如果启用了自动迁移,是否有基于代码的方法来显示将应用的更改?

这里有一个适合我的解决方案

public string GetAutomaticMigrationsScript<T>() where T : DbMigrationsConfiguration, new()
{
    var configuration = new T();
    configuration.AutomaticMigrationDataLossAllowed = true;
    configuration.AutomaticMigrationsEnabled = true;
    var migrator = new DbMigrator(configuration);
    var scriptor = new MigratorScriptingDecorator(migrator);
    var script = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null);

    return script;
}
public字符串GetAutomaticMigrationsScript(),其中T:DbMigrationsConfiguration,new()
{
var配置=新的T();
configuration.AutomaticMigrationDataLossAllowed=true;
configuration.AutomaticMigrationsEnabled=true;
var migrator=新的DbMigrator(配置);
var scriptor=new MigratorScriptingDecorator(migrator);
var script=scriptor.ScriptUpdate(sourceMigration:null,targetMigration:null);
返回脚本;
}
用法:

Console.WriteLine(GetAutomaticMigrationsScript<MyConfiguration>());
Console.WriteLine(GetAutomaticMigrationsScript());
变量
script
将包含将运行以执行自动迁移的SQL脚本。此代码实际上不会执行迁移,但您可以将
script
的内容粘贴到SSM中,并在那里运行迁移