sách gpt4 ai đã đi

database - 如何使用PowerShell批量调用Update-Database

In lại 作者:行者123 更新时间:2023-12-02 23:10:20 27 4
mua khóa gpt4 Nike

我们使用 Azure 弹性池,生成多个客户端数据库和一个引用客户端数据库的主数据库。

我们已经拥有多个数据库,并且正在开发新版本的代码。我们使用 EF6 代码优先。当我们对模型进行更改(添加属性)时,我们会创建迁移文件,并需要为所有现有客户端数据库调用 Update-Database 。这是我们想要跳过的猴子工作。

我已经有一个 Powershell 脚本来连接到主数据库并对表执行查询。这将返回子数据库的名称。有了它,我可以更改 Web.config 并将模板数据库名称替换为子数据库的正确名称。

现在我需要调用Update-Database来执行迁移脚本。对于最后一部分,我很困难,因为我在 Visual Studio 外部运行 ps1 脚本,因此命令 Update-database 是未知的。我尝试使用 migrate.exe 但随后出现很多错误。

我认为最简单的解决方案是在包管理器控制台中运行我的脚本,但我不知道如何做到这一点。

1 Câu trả lời

我设法让它工作。将 ps1 文件放入代码文件夹的根目录后,我可以使用 .\UpdateDatabases.ps1 在包管理器控制台中运行它。

为了完整起见,这是我创建的脚本。我是 PowerShell 新手,因此可能可以进行一些优化。

lớp
$currentPath = (Get-Item -Path ".\" -Verbose).FullName
#Read Web.config
$webConfig = $currentPath + "\\Web.config"

$doc = (Get-Content $webConfig) -as [Xml]
$DatabaseNamePrefix = $doc.configuration.appSettings.add | where {$_.Key -eq 'DatabaseNamePrefix'}

#Get Master connectionstring
$root = $doc.get_DocumentElement();
foreach($connString in $root.connectionStrings.add | where {$_.Name -eq "Master"})
{
$masterConn = $connString.connectionString
}

#Connect to master database
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = $masterConn

#Query Client table for the child database names
$SqlQuery = "select Code from Clients"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
#Put query result in dataset
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()

foreach ($row in $DataSet.Tables[0].Rows)
{
$clientDbName = $row[0].ToString().Trim()
#Change Web.Config
foreach($connString in $root.connectionStrings.add | where {$_.Name -eq "DevelopmentDb"})
{
$newDatabaseName = "Database=" + $DatabaseNamePrefix.value + $clientDbName + ";";
$newConn = $connString.connectionString -replace "(Database=.*?;)",$newDatabaseName
$connString.connectionString = $newConn;
}
$doc.Save($webConfig)

#Update database
Update-Database -ConfigurationTypeName Application
}
"Finished"

关于database - 如何使用PowerShell批量调用Update-Database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39641932/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com