如何使用EF代码首次迁移从PowerShell生成脚本

时间:2016-07-08 18:46:10

标签: entity-framework-6

当使用基于EF6代码的迁移的部署消失时,我需要通过电子邮件发送给我们的DBA。我可以使用migrate.exe工具和verbose标志,通过powershell来获取脚本,但每个命令在10222个字符后被截断。这通常只会影响migrationHistory的模型哈希。有没有人知道通过Powershell为EF6迁移生成完整的sql脚本的方法

感谢 Ť

1 个答案:

答案 0 :(得分:1)

想出migrate.exe正在包装toolingfacade类所以我创建了传递所需变量的对象以及设置verbosedelegate。关于这个的好处是我可以运行updatescript函数,如果我只是想获取sql脚本

[Reflection.Assembly]::LoadFrom("EntityFramework.dll") | Out-Null
$con = New-Object -TypeName System.Data.Entity.Infrastructure.DbConnectionInfo -ArgumentList @("constring", "System.Data.SqlClient")
$tools = New-Object -TypeName System.Data.Entity.Migrations.Design.ToolingFacade -ArgumentList @("dbcondllname", "dbcondllname",$null,"workingdr",$null,$null,$con)
$tools.LogVerboseDelegate = {param($sql)
    Write-Verbose $sql -verbose #dumps the sql to RM log
}
$tools.Update($null,$false)