C# 单独项目中带有DAL的连接字符串的问题

C# 单独项目中带有DAL的连接字符串的问题,c#,asp.net,data-access-layer,C#,Asp.net,Data Access Layer,我最初在网站的App_代码文件夹中编写了一个数据访问层。然后,我们在一个单独的项目中开发了一个web服务。为了使网站和web服务都可以访问相同的DAL,我将其移动到另一个项目。我有一个带有tableadapters的数据集,为了编译DAL项目,我必须将连接字符串添加到应用程序属性设置中。但这意味着我必须为每次部署重新编译DAL。此外,我可能有2或3个网站在服务器上使用相同的DAL。因此,我想在每个网站的web.config中设置连接字符串,并保持不变。 每次创建tableadapter实例时,我

我最初在网站的App_代码文件夹中编写了一个数据访问层。然后,我们在一个单独的项目中开发了一个web服务。为了使网站和web服务都可以访问相同的DAL,我将其移动到另一个项目。我有一个带有tableadapters的数据集,为了编译DAL项目,我必须将连接字符串添加到应用程序属性设置中。但这意味着我必须为每次部署重新编译DAL。此外,我可能有2或3个网站在服务器上使用相同的DAL。因此,我想在每个网站的web.config中设置连接字符串,并保持不变。 每次创建tableadapter实例时,我是否必须检查代码并进行更改? e、 g.来自

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

还是有更好的办法


Colin

使用标准ConnectionString配置部分,您将能够检索连接字符串,而无需求助于实用程序类:


您仍然需要将连接字符串放入每个需要数据库的应用程序的app.config或web.config文件中。

我在这里找到了我想要的答案:

在s_ruchit的回答中

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

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

致:



不需要其他代码更改!多亏了穆罕默德和弗雷什,公共设施课程也开始运作了。它在内部使用ConfigurationManager,并从web.config正确检索连接字符串。但是数据集设计器需要应用程序设置,并且代码当前不使用该实用程序。我想我必须动态地设置每个tableadapters连接。或者有更好的方法吗?我以为数据集设计者直接使用了这个ConnectionString部分。但如果不是,也许您可以使用工厂模式返回正确配置的适配器。。。通过这种方式,至少表适配器的动态设置都在一个地方完成。我发现如果名称匹配,就会这样做——但是名称必须完全限定——请参阅我添加的更详细的答案。因此,不需要动态设置表适配器!我们也有同样的问题。。我们如何解决这个问题是。。。我们添加了从web.config获取连接字符串的自定义类,然后在nex项目中使用TableAdapter时手动打开连接,这将非常有帮助。。您能告诉我在多个表中执行惰性操作时如何处理事务吗?我发现使用TableAdapters的事务是一个真正的问题。我在这里尝试了这种方法:但由于某种原因,当我将DAL转移到一个单独的项目中时,这种方法失败了,而且我认为它可能是内存泄漏的一个来源。我不理解TransactionScope的优点和缺点,所以我编写了一个存储过程来封装我的事务,并将该方法添加到TableAdapter中。我将通过电子邮件通知您,我们如何实现事务。。。你的电子邮件?
<add name="ConnectionStringMainDB" 
     connectionString="<myConnStringHere>"
     providerName="System.Data.OracleClient"/>
<add name="DatabaseAccess.Properties.Settings.ConnectionStringMainDB"
     connectionString="<myConnStringHere>" 
     providerName="System.Data.OracleClient"/>