集中连接字符串。什么是常见做法?

时间:2015-11-20 21:30:17

标签: c# asp.net asp.net-mvc connection-string

我正在寻找一种集中定位几个连接字符串的方法。我们的团队有很多项目,主要是控制台应用程序,还有一些Web API和网站。当然,这个数字还在继续增长,尤其是在控制台应用和Web API中。我们现在需要更改所有这些服务器上的数据库服务器和用户名/密码。我们别无选择,只能立即在每一个上手动完成,但是我们希望能够提供一个中心位置,以便我们可以只更改一个文件或位置,我们所有的应用程序都会选择设置从那里。

我一直在做一些搜索,到目前为止,我看到了使用和外部配置文件的建议,使用machine.config,或者可能是一个Web服务来获取信息。

使用外部文件似乎不会对它有很大帮助,因为如果需要进行更改,您仍然需要更改所有应用程序上的文件,即使它是外部的。

理论上,machine.config现在对我来说似乎是合乎逻辑的。您只需将连接信息放在机器级别,任何应用程序,站点或Web API都应该能够获取它。但是,我看到很多讨论人们都在劝阻这种做法。另外我试图让我的代码从machine.config中提取连接信息,但我现在还没能让它工作。

那么,有什么建议吗?有使用machine.config,外部文件或web服务来存储连接字符串信息的真实世界利弊的人吗?

2 个答案:

答案 0 :(得分:3)

最简单的方法是使用将配置文件保存在单个项目中,并将该配置文件作为“Link”添加到其他项目中。

您还可以将应用程序配置中的连接字符串separate保留在单独的配置文件中。并在单独的配置文件中使用连接字符串的引用。这是更具体的解决方案。

<configuration>
    <connectionStrings configSource="connections.config"/> 
</configuration>

文件connections.config包含

<connectionStrings>
   <add name="name" connectionString="your conn_string" providerName="System.Data.SqlClient" />
   <add name="name2" connectionString="your conn_string2" providerName="System.Data.SqlClient" />
</connectionStrings>

答案 1 :(得分:0)

为此目的创建一个单独的类库JUST,将连接字符串添加为类文件中的属性。然后,您始终可以在需要连接字符串到数据库的任何应用程序中引用此库。

从属性值中检索代码中的连接字符串。但是,使用这种方法,如果进行任何更改,则总是需要重新编译代码。