我有一个WebForms项目,其连接字符串已硬编码到web.config中(对于Debug - web.Debug.config)。此连接字符串指向要进行开发的DB服务器。
我想运行该数据库的本地副本,以便我的更改不会立即影响其他人。
我一直在做的是进入web.config并更新连接字符串以指向我的本地数据库。这可行,但有点乏味,因为我必须记住排除web.config,如果我撤消所有更改,则必须重新更新它。
因为,就像我说的,其他人正在使用这个解决方案,我想避免检查任何内容或修改Web配置。
有没有办法覆盖web.config连接字符串以强制网站指向我的本地数据库而不检查任何来源控件?
答案 0 :(得分:9)
一种解决方案是使用配置转换功能。
VS 2012:
在web.local.config中添加本地连接字符串转换,类似于
<connectionStrings>
<add name="DbConnection"
connectionString="...Add Local Connection String..."
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
运行或调试项目时,请确保从绿色运行箭头旁边的列表框中选择本地配置。你只是不要检查web.local.config
答案 1 :(得分:7)
您可以做的一件事是为您的连接字符串设置一个单独的文件 - 您根本不会将其检入源代码控制中。
根据您的内容的组织方式,您可能需要每个正在进行开发的人都做同样的事情,并且根据您的发布/部署方式,这可能对您不起作用。
例如:
<强>的Web.config 强>
<configuration>
<connectionStrings configSource="connectionstrings.config">
</connectionStrings>
</configuration>
connectionstrings.config(不在源代码管理中)
<connectionStrings>
<add name="cs" connectionString="server=.;database=whatever;"/>
</connectionStrings>
每个开发人员都可以选择他们的本地计算机指向哪个数据库,只要connectionstrings.config文件不在源代码控制中(将其添加到忽略列表中),就没有人会踩到彼此的脚。
答案 2 :(得分:3)
在本地计算机上创建 SQL ALIAS 。
单击开始运行并在本地计算机上键入“cliconfg.exe”。这将帮助您在本地计算机上创建SQL别名。在web.config上连接到实时数据库,但在您的机器上创建一个将重定向到本地数据库的SQL别名。完成此操作后,当您发布程序时,它将自动连接到实时数据库,但是当从本地计算机运行时,它将连接到本地数据库而无需更改任何代码。