我有两个项目:
- ASP.Net 3.5 网站(前端、UI)
- VB 类库(数据访问逻辑)
我应该在哪里保存我的connectionString,以便我可以从类库中使用if?这对我部署/发布时的放置位置有何影响?
笔记:
- 我不想将它传递给我的 VB 类中的每个函数
我有两个项目:
我应该在哪里保存我的connectionString,以便我可以从类库中使用if?这对我部署/发布时的放置位置有何影响?
笔记:
根据您构建 DAL 的方式——LINQ、TableAdapters 等——它可能会自动在 web.config 文件中查找它。如果您通过设计器创建了 DAL,它可能会将默认连接字符串存储在您的类库的 app.config 文件中。我将连接字符串部分从 app.config 文件复制到我的 web.config 并将连接字符串更改为正确的数据库(我有单独的 web.config 用于 DEV/QA/PROD)。这使得它变得微不足道,因为设计者生成的代码已经实现了从配置文件中检索它的代码。
如果您正在手动编写 DAL 并需要传入连接字符串,我建议设置一个强类型配置类,该类与 web.config 接口并延迟加载配置值。使用工厂创建您的 DAL 并通过构造函数将配置类注入您的工厂,以便它知道如何使用从配置文件中检索到的 connectionsString 创建您的 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 的引用) -
公共 MyDataContext() : base(System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"] .ConnectionString, mappingSource)
只要 web.config 文件包含“MyConnectionString”,配置管理器就会负责其余的工作。
我们将我们的保留在每个服务器的 machine.config 中,并有一个自定义 DAL 来处理我们的 Web 应用程序的所有数据库交互。
将它放在连接字符串部分的 web.config 中。
在 VB 项目中使用 HttpContext.Current.GetSection 来检索节。
一位开发人员曾经的想法是,我们应该将所有连接字符串存储在数据库表中。
不要尝试那样做。你不会走得很远。:)