谁能建议我如何以编程方式切换调试和实时连接字符串?
我看到其他人已经将实体连接从控制器传递给构造函数,如下所示:
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 转换。