【问题标题】:Connection Strings - MVC Entity Framework - Database First连接字符串 - MVC 实体框架 - 数据库优先
【发布时间】:2012-12-10 16:12:19
【问题描述】:

谁能建议我如何以编程方式切换调试和实时连接字符串?

我见过其他人像这样从控制器将 EntityConnection 传递给构造函数:

private XYZDatabase db = new XYZDatabase(ConfigurationManager.
ConnectionStrings["XYZDatabase-TEST"].ConnectionString);

但它仍然需要手动更改吗?有没有办法使用

System.Net.Dns.GetHostName() 或类似 自动切换?

谢谢

【问题讨论】:

    标签: entity-framework asp.net-mvc-4 connection-string database-first


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      在我的软件中,我的 app.config 和注释/取消注释中只有 2 个同名的连接字符串以在配置之间切换。

      另一种方法是,您可以在解决方案中创建一个静态属性(.asax 文件?),然后在获取 ConnectionStrings 时使用它在 XYZDatabase-TEST 和 XYZDatabase 之间进行交换。

      【讨论】:

        【解决方案3】:

        将连接字符串添加到您的 Web.config 中,例如:

        <connectionStrings>
            <add name="XYZDatabase-TEST" connectionString="Server=.\SQLEXPRESS;Database=XYZDatabase-TEST";integrated security=SSPI;" providerName="System.Data.SqlClient" />
        </connectionStrings>
        

        然后打开你的 Web.Release.config 并添加

        <connectionStrings>
            <add name="XYZDatabase-TEST"
                connectionString="Data Source=OTHERSERVER;Initial Catalog=XYZDatabase-TEST;Persist Security Info=True;User ID=sa;Password=password" providerName="System.Data.SqlClient"
                xdt:Transform="SetAttributes"
                xdt:Locator="Match(name)"/>
        </connectionStrings>
        

        现在,每次您使用 Release 配置将应用程序发布到部署服务器时,它都会使用来自 web.release.config 的连接字符串

        请注意,当您调试时,此转换不会在本地工作。您必须发布才能运行 web.config 转换。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-20
          • 2011-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多