c# - 自动化 EF 迁移 "Update-Database -Script"

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

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

我能够使用 Update-Database -Script ... 生成 SQL 脚本

但是,我想将其自动化。我希望 -Script 开关可以接受一个指定将 SQL 写入何处的参数,但事实并非如此。此外,输出重定向不起作用,因为 SQL 脚本不是写入 STDOUT,而是写入临时文件。我看不出有什么办法可以从脚本中获取该临时文件。

关于如何自动生成迁移 -> SQL 脚本的任何想法?也许有一些我不知道的 powershell 魔术技巧?

编辑:顺便说一句,使用 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() 一起,您可以完全控制生成脚本的粒度。

关于c# - 自动化 EF 迁移 "Update-Database -Script",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325137/

相关文章:

c# - 如何使用 asp.net mvc webapi 发送电子邮件附件

powershell - 有没有比输入 | 更快的方法来计算 powershell 中的行数?测量对象

Python 打印每个字符之间有空格的字符串

c# - 如何访问动态创建的标签数组

c# - OpenFileDialog 隐藏预览

sql - 在 Entity Framework 中使用更新数据库时,子查询返回超过 1 个值错误

c# - 实体拆分以及如何配置连接

entity-framework - 代码优先和模型优先有什么区别?

powershell - 您不能在空值表达式上调用方法

c# - INotifyPropertyChanged 委托(delegate)