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