2009-08-04 54 views
4

我最初在我的网站的App_Code文件夹中编写了一个数据访问层。然后我们在一个单独的项目中开发了一个Web服务。为了使网站和Web服务都可以访问相同的DAL,我将它移到了不同​​的项目中。我有一个包含tableadapters的数据集,为了让DAL项目编译,我必须将连接字符串添加到应用程序属性设置中。但这意味着我必须为每个部署重新编译DAL。另外,我可能在使用相同DAL的服务器上有2个或3个网站。所以我想在每个网站的web.config中设置连接字符串并将其保留。 每次我创建一个tableadapter的实例时,是否必须通过我的代码并进行更改? 例如从连接字符串与DAL在单独项目中的问题

using (MessageQueue adaptor = new MessageQueue()) 
{ 
    return adaptor.GetMessages(UserId, MobileId, StartDate, EndDate); 
} 

using (MessageQueue adaptor = new MessageQueue()) 
using (OracleConnection connection = new OracleConnection(OracleUtilities.ConnectionString)) 
{ 
    adaptor.Connection = connection; 
    return adaptor.GetMessages(UserId, MobileId, StartDate, EndDate); 
} 

还是有更好的办法?

科林

回答

3

我发现我在这里寻找答案:

Guidance needed ASP.Net app connection string

由s_ruchit答案

web.config中的连接字符串名称必须与app.config中的连接字符串名称相匹配 - 它包含完全限定的名称。所以在我的情况下,我改变

<add name="ConnectionStringMainDB" 
    connectionString="<myConnStringHere>" 
    providerName="System.Data.OracleClient"/> 

到:需要

<add name="DatabaseAccess.Properties.Settings.ConnectionStringMainDB" 
    connectionString="<myConnStringHere>" 
    providerName="System.Data.OracleClient"/> 

没有其他代码的变化!感谢穆罕默德和更新鲜

1

使用标准的ConnectionStrings配置部分,你将能够检索连接字符串,而不诉诸公用事业类:

System.Configuration.ConfigurationManager.ConnectionStrings

你仍然将不得不把连接字符串到需要数据库的每个应用程序的app.config或web.config文件中。

+0

公用事业类的作品。它在内部使用ConfigurationManager并正确地从web.config中检索连接字符串。但数据集设计人员需要应用程序设置,并且代码当前不使用该实用程序。我想我将不得不动态设置每个表适配器连接。或者,还有更好的方法? – Colin 2009-08-04 15:36:22

+0

我认为DataSet设计器直接使用了这个ConnectionStrings部分。但是,如果没有,也许你可以使用工厂模式来返回正确配置的适配器...这样,至少表适配器的动态设置全部在一个地方完成。 – freshr 2009-08-05 05:37:53