我正在为我的项目实施实体框架(v5)基于代码的迁移。
来自我们客户的数据库管理员有时会有点偏执,并希望手动执行sql脚本。
由于我们已经有很多版本,并且我们支持SqlServer和Oracle并行,因此我们不希望从所有可能的版本x.x.x.x到y.y.y.y管理多个更新脚本。是否有可能以与我在程序包管理器控制台中调用它相同的方式以编程方式获取sql脚本
Update-Database -Script
因此,客户端将通过一个简单的控制台应用程序获取,具体取决于他的数据库系统和当前版本的正确sql脚本作为输出。
答案 0 :(得分:9)
var configuration = new Configuration();
var migrator = new DbMigrator(configuration);
var scriptor = new MigratorScriptingDecorator(migrator);
var script = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null);
Console.WriteLine(script);
migrator.Update();
var pending = migrator.GetPendingMigrations();
基本上你需要
DbMigrator db = new DbMigrator(HERE CONNECTION STRING);
db.Update(HERE TARGET VERSION);