我们有一个包含多个DLL的项目。在每个DLL中,我们连接到一个数据库 - 总是与客户端相同。
因此,我们现在有3个几乎相同的连接字符串:一个用于我们的网站,一个用于ado.net,另一个用于telerik报告:
<add name="BDConnectionString" connectionString="Data Source=localhost;Initial Catalog=DATABASE;Persist Security Info=True;User ID=USER;Password=PASSWORD; MultipleActiveResultSets=True;Pooling=True;Max Pool Size=500;" providerName="System.Data.SqlClient" />
<add name="CMS.Reporting.My.MySettings.BDConnectionString" connectionString="Data Source=localhost;Initial Catalog=DATABASE;Persist Security Info=True;User ID=USER;Password=PASSWORD" providerName="System.Data.SqlClient" />
<add name="KOPWebEntities" connectionString="metadata=res://*/Data.web.csdl|res://*/Data.web.ssdl|res://*/Data.web.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost;Initial Catalog=DATABASE;Persist Security Info=True;User ID=USER;Password=PASSWORD;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
现在它仍然可以管理,但是在未来,我们将有更多的ADO.Net Entity Framework连接,所以客户端可能有10个连接字符串?
有没有办法说,“好吧,对于这个连接字符串,使用来自这里的值”而不是重复它?至少对于ADO.Net?
或者有更好的方法吗?
由于
答案 0 :(得分:0)
我注意到你提到了Entity Framework。可以使用与application / web config中定义的SQL连接不同的SQL连接创建实体上下文。 (我必须挖掘代码)。但是,就更普遍的“有一个实际引用另一个连接字符串的连接字符串”的问题而言,我会说,如果你没有来源,那就太难了。
如果您的DLL没有引用app / web配置设置可能会更好,并且对于那里定义的类,您可以传入“应用程序密钥”,该“应用程序密钥”具有引用连接的关联值字符串,SQL连接字符串本身,SqlConnection实例,或者你组成的一些SqlConnection-Factory-Thing。