从代码生成 ef6 sql 更新脚本

Generate ef6 sql update script from code

当我从 Nuget 程序包管理器控制台 运行 update-database -Script 时,Visual studio 生成一个 SQL 脚本,我可以 运行 更新数据库。

有没有什么方法可以在 C# 中生成此 SQL 脚本而无需 运行ning 它?

这样我就可以在更新数据库之前将其显示给正在更新应用程序的用户。

您可以使用 DbMigrator and MigratorScriptingDecorator:

var configuration = new DbMigrationsConfiguration
{
    ContextType = typeof(ApplicationDbContext),
    MigrationsAssembly = typeof(ApplicationDbContext).Assembly,
    MigrationsNamespace = "YourNamespace.Migrations",
    AutomaticMigrationsEnabled = true
};
var dbMigrator = new DbMigrator(configuration);
var migratorScriptingDecorator = new MigratorScriptingDecorator(dbMigrator);
string script = migratorScriptingDecorator.ScriptUpdate(sourceMigration: null, targetMigration: null);