【发布时间】:2009-04-24 05:40:08
【问题描述】:
我有两个项目:
- ASP.Net 3.5 网站(前端,UI)
- VB 类库(数据访问逻辑)
我应该在哪里保存我的connectionString,以便我可以从类库中使用if?这对我部署/发布时的放置位置有何影响?
注意:
- 我不想将它传递给我的 VB 类中的每个函数
【问题讨论】:
标签: asp.net-3.5
我有两个项目:
我应该在哪里保存我的connectionString,以便我可以从类库中使用if?这对我部署/发布时的放置位置有何影响?
注意:
【问题讨论】:
标签: asp.net-3.5
根据您构建 DAL 的方式(LINQ、TableAdapters 等),它可能会自动在 web.config 文件中查找它。如果您通过设计器创建了 DAL,它可能会将默认连接字符串存储在您的类库的 app.config 文件中。我将连接字符串部分从 app.config 文件复制到我的 web.config 并将连接字符串更改为正确的数据库(我有单独的 web.config 用于 DEV/QA/PROD)。这使得它变得微不足道,因为设计器生成的代码已经实现了从配置文件中检索它的代码。
如果您正在手动编写 DAL 并需要传入连接字符串,我建议设置一个强类型配置类,该类与 web.config 接口并延迟加载您的配置值。使用工厂创建你的 DAL 并通过构造函数将配置类注入你的工厂,以便它知道如何使用从配置文件中检索到的连接字符串来创建你的 DAL。
【讨论】:
我的问题来自于我花了半天的时间尝试完成这项工作,但在部署时我一直连接错误(我使用另一个数据库)。
我的问题是,我正在使用
My.Settings.DefaultConnectionString
...在我的 VB 类库中检索 connectionString。
在关注 tvanfossons anwer 之后,我又挖了一些,发现我可以简单地使用(在引用 system.configuration 之后):
System.Configuration.ConfigurationManager.ConnectionStrings.Item("DefaultConnectionString").ConnectionString
它在 web-config 中查找 webapplications 和在 app.config 中查找 windows/类库应用程序。
我很高兴它现在可以工作,但更高兴我知道为什么。 ;)
【讨论】:
我遇到了同样的问题,我最终使用 System.Configuration.ConfigurationManager 类从我的类库中获取存储在我的 web.config 文件中的连接字符串,就像 Kjensen 的回答所建议的那样。这很有效,如果我有更多经验,我会投票赞成这个答案。
我需要连接字符串来构建我的 Linq2Sql 数据上下文,该方法提供给我。
我现在像下面这样构建我的数据上下文(记得添加对 System.Configuration 的引用)-
public MyDataContext() : base(System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"] .ConnectionString, mappingSource)
只要 web.config 文件包含“MyConnectionString”,配置管理器就会负责其余的工作。
【讨论】:
我们将我们的保留在每个服务器的 machine.config 中,并有一个自定义 DAL 来处理我们的网络应用程序的所有数据库交互。
【讨论】:
将它放在连接字符串部分的 web.config 中。
在 VB 项目中使用 HttpContext.Current.GetSection 来检索节。
【讨论】:
一位开发人员曾经的想法是,我们应该将所有连接字符串存储在数据库表中。
不要尝试这样做。你不会走得很远。 :)
【讨论】: