连接字符串 - MVC 实体框架 - 数据库优先



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

我看到其他人已经将实体连接从控制器传递给构造函数,如下所示:

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

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

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

谢谢

>Ayende有一篇解决这个问题的帖子。

http://ayende.com/blog/135169/frictionless-development-web-config-and-connection-strings

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

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

将连接字符串添加到 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>

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

请注意,调试时,此转换将在本地不起作用。必须发布才能运行 web.config 转换。

最新更新