自动化EF-Migrations“Update-Database -Script”

时间:2013-01-14 19:22:42

标签: c# entity-framework powershell entity-framework-5 ef-migrations

我正在使用EF迁移来跟踪对EF代码优先数据库模型的更改。现在我需要为每次迁移生成一个SQL脚本,以便我可以将这组脚本传递给DBA。

我能够使用Update-Database -Script ...

生成SQL脚本

但是,我想自动化这个。我希望-Script开关接受一个指定SQL编写位置的参数,但事实并非如此。此外,输出重定向不起作用,因为SQL脚本不会写入STDOUT,而是写入临时文件。我认为无法从脚本中获取该临时文件。

如何自动化迁移的任何想法 - > SQL脚本生成?也许有一些我不知道的神奇的PowerShell技巧?

编辑:顺便说一句,使用migrate.exe或任何其他“迁移感知”方法都不是一种选择,因此必须提供SQL脚本。

1 个答案:

答案 0 :(得分:31)

最后我找到了解决方案。我不知道的是,可以从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()一起,您可以完全控制生成的脚本的粒度。