自动化ef -迁移;更新-数据库-脚本;
本文关键字:-脚本 数据库 更新 迁移 ef 自动化 | 更新日期: 2023-09-27 17:53:16
我正在使用EF迁移来跟踪我们的EF代码优先DB模型的更改。现在我需要为每次迁移生成一个SQL-Script,这样我就可以将该脚本集传递给DBA。
我能够生成SQL脚本与Update-Database -Script ...
然而,我想让它自动化。我希望-Script开关将接受一个指定将SQL写入到何处的参数,但事实并非如此。此外,输出重定向不起作用,因为SQL脚本没有写入STDOUT,而是写入临时文件。我看没有办法从脚本中获得那个临时文件。
有什么想法如何自动化迁移-> SQL脚本生成?也许有什么我不知道的魔法魔法?
编辑:顺便说一下,使用migrate.exe或任何其他"迁移感知"的方法不是一个选项,交付SQL脚本是必须的。
我终于找到了解决办法。我没有意识到的是,可以从c#代码生成SQL脚本,如下所示:
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
var migrator = new DbMigrator(new Configuration());
var scriptor = new MigratorScriptingDecorator(migrator);
var sql = scriptor.ScriptUpdate("Name-Of-Source-Migration", "Name-Of-Target-Migration");
与migrator.GetLocalMigrations()
一起,您可以完全控制生成脚本的粒度