如何为多个数据库启用迁移,但是一个上下文?

时间:2014-07-01 23:53:12

标签: entity-framework ef-migrations entity-framework-6.1

  

环境:

     
    

实体框架6.1.0
    .NET 4.5

  

嗨,我已经在项目中启用了迁移功能。但我希望能够使用相同的上下文更新不同的数据库。可能吗?在我研究的所有内容中,人们正在寻找一个数据库上的多个上下文或多个数据库上的多个上下文。我需要的是多个数据库的一个上下文。 这是我的情景:

development_db
production_db

我希望能够将更改应用到我的development_db,然后,在测试完所有内容之后,我想为production_db运行相同的update-database命令。我已经拥有2个连接字符串(对于这两个数据库),但我不知道它是否可行,因为迁移文件将是整个迁移项目的一个。

有可能吗?

感谢。

1 个答案:

答案 0 :(得分:3)

我工作的方式,我在

的开发环境中配置上下文

web.config

<add name="MyContext" connectionString="Data Source=.\SQLDev2008R2;Initial Catalog=My_DEV;Persist Security Info=True;Integrated Security=SSPI;Connection Timeout=240" providerName="System.Data.SqlClient" />

然后我在发布生产版本时使用SlowCheetah转换该连接字符串

web.Release.config

<connectionStrings>
  <add name="MyContext"
    connectionString="Data Source=(local);Initial Catalog=My_PROD;Integrated Security=True"
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>

</connectionStrings>

当应用程序在Production中运行时,我允许自动应用迁移。您可以使用Enable-Migrations -EnableAutomaticMigrations(以及其他适当的参数)配置此选项。

这可能不适合某些环境。如果是这种情况,在开发环境中运行update-database之前,首先运行update-database -Script(使用适当的参数)。这将生成一个SQL脚本,当您准备应用给定的更新时,可以在生产数据库中运行该脚本,而不是依赖于自动迁移。