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