实体框架批量更新 - 具有连接字符串的数据库

时间:2013-11-21 10:31:32

标签: .net entity-framework visual-studio-2012 ef-code-first nuget

我有一个Visual Studio解决方案,包含四个Entity Framework Code First项目。我经常将项目部署到多个环境,因此使用多个连接字符串。

因此,如果我需要更新所有环境,我会为其中一个项目执行以下操作:

PM> Update-Database -Verbose -StartupProjectName "Sln.DataAccess1" -ConnectionStringName "DevContext"
PM> Update-Database -Verbose -StartupProjectName "Sln.DataAccess1" -ConnectionStringName "TestContext"
PM> Update-Database -Verbose -StartupProjectName "Sln.DataAccess1" -ConnectionStringName "DemoContext"
PM> Update-Database -Verbose -StartupProjectName "Sln.DataAccess1" -ConnectionStringName "StagingContext"

你可以想象Sln.DataAccess2,Sln.DataAccess3和Sln.DataAccess4的继续......

有更简单的方法吗?例如,同时运行所有?我还没有找到解决方案。

不,我不想使用EF:使用像Database.SetInitializer(new DropCreateDatabaseAlways<DbContext>());这样的初始化程序自动更新数据库。

(我不介意拥有一个GUI,只是指出哪个连接字符串用于哪个项目,因为它现在有很多复制和粘贴。但最好的是拥有一个{{ 1}}命令,用于以某种方式同时运行所有。)

1 个答案:

答案 0 :(得分:0)

我已经创建了一个自定义Nuget包,如Phil Haack在this帖子中所述。 init.ps1文件包含以下两行:

param($installPath, $toolsPath, $package)
Import-Module (Join-Path $toolsPath CodeFile1.psm1)

CodeFile1.psm1文件:

function update-all-db
{
    Write-Host "Update all database contexts"
    update-database -ConfigurationTypeName MyProject.Web.Migrations.IdentityDb.Configuration
    update-database -ConfigurationTypeName MyProject.Web.Migrations.OtherDb.Configuration 
}

Export-ModuleMember update-all-db

将软件包安装到项目中,并从软件包管理器控制台调用update-all-db命令。