选择构建配置DbContext迁移

时间:2015-11-04 00:27:27

标签: .net entity-framework ef-migrations

我可以在我的网络配置中更新数据库:

Update-Database -Verbose 

部署数据库时,我在web.config.debug转换文件中定义了不同的连接字符串。

如何为构建配置使用正确的连接字符串?

例如:

Web.config

<configuration>
    <connectionStrings>
        <add name="MyConnection" connectionString="My_Local_Connection_String"/>
    </connectionStrings>
</configuration>

Web.config.Debug:                                         

Web.config.Release

<configuration>
    <connectionStrings>
        <add name="MyConnection" connectionString="My_Release_Connection_String" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
</configuration>

一旦我证明本地迁移是正常的,我需要在连接字符串Web.config.Debug上进行相同的迁移,并假设它适用于发布版本。

如何告诉EF使用哪种配置转换?

2 个答案:

答案 0 :(得分:0)

可能有更好的解决方案,但想到的一个简单的解决方案是:

  1. 将所有连接字符串放在web.config中,并使用适当的名称(即MyApplication-Debug,MyApplication-Release)
  2. 在迁移配置类中,使用预处理器#if指定连接字符串,例如

    internal sealed class Configuration : DbMigrationsConfiguration<MyApplicationContext>
    {
       public Configuration()
       {
          AutomaticMigrationsEnabled = false;
    
          string connectionStringName;
    #if DEBUG
          connectionStringName = "MyApplication-Debug";
    #else
          connectionStringName = "MyApplication-Release";
    #endif
    
          TargetDatabase = new DbConnectionInfo(connectionStringName);
      }
    }
    

答案 1 :(得分:0)

如果您使用的是 dotnet CLI,那么您可以通过

指定目标构建配置

--configuration

论证