1

我有两个项目:

  1. ASP.Net 3.5 网站(前端、UI)
  2. VB 类库(数据访问逻辑)

我应该在哪里保存我的connectionString,以便我可以从类库中使用if?这对我部署/发布时的放置位置有何影响?

笔记:

  1. 我不想将它传递给我的 VB 类中的每个函数
4

6 回答 6

7

根据您构建 DAL 的方式——LINQ、TableAdapters 等——它可能会自动在 web.config 文件中查找它。如果您通过设计器创建了 DAL,它可能会将默认连接字符串存储在您的类库的 app.config 文件中。我将连接字符串部分从 app.config 文件复制到我的 web.config 并将连接字符串更改为正确的数据库(我有单独的 web.config 用于 DEV/QA/PROD)。这使得它变得微不足道,因为设计者生成的代码已经实现了从配置文件中检索它的代码。

如果您正在手动编写 DAL 并需要传入连接字符串,我建议设置一个强类型配置类,该类与 web.config 接口并延迟加载配置值。使用工厂创建您的 DAL 并通过构造函数将配置类注入您的工厂,以便它知道如何使用从配置文件中检索到的 connectionsString 创建您的 DAL。

于 2009-03-14T15:18:57.353 回答
2

我的问题来自于花了半天的时间试图完成这项工作,但是在部署时我一直得到错误的连接(我使用另一个数据库)。

我的问题是,我正在使用

My.Settings.DefaultConnectionString

...在我的 VB 类库中检索 connectionString。

在遵循 tvanfossons anwer 之后,我又挖了一些,发现我可以简单地使用(在引用 system.configuration 之后):

System.Configuration.ConfigurationManager.ConnectionStrings.Item("DefaultConnectionString").ConnectionString

它在 web-config 中查找 webapplications,在 app.config 中查找 windows/类库应用程序。

我很高兴它现在可以工作,但更高兴我知道为什么。;)

于 2009-03-14T23:43:09.857 回答
1

我遇到了同样的问题,我最终使用 System.Configuration.ConfigurationManager 类从我的类库中获取存储在我的 web.config 文件中的连接字符串,就像 Kjensen 的回答所建议的那样。这产生了奇迹,如果我有更多经验,我会投票赞成这个答案。

我需要连接字符串来构建我的 Linq2Sql 数据上下文,该方法为我提供了该上下文。

我现在构建我的数据上下文,如下所示(记得添加对 System.Configuration 的引用) -

公共 MyDataContext() : base(System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"] .ConnectionString, mappingSource)

只要 web.config 文件包含“MyConnectionString”,配置管理器就会负责其余的工作。

于 2009-04-23T21:40:08.837 回答
0

我们将我们的保留在每个服务器的 machine.config 中,并有一个自定义 DAL 来处理我们的 Web 应用程序的所有数据库交互。

于 2009-03-14T15:11:23.470 回答
0

将它放在连接字符串部分的 web.config 中。

在 VB 项目中使用 HttpContext.Current.GetSection 来检索节。

于 2009-03-14T15:11:44.873 回答
0

一位开发人员曾经的想法是,我们应该将所有连接字符串存储在数据库表中。

不要尝试那样做。你不会走得很远。:)

于 2009-03-14T23:51:05.873 回答