如何使用Linq dbml类的web.config自定义配置类

时间:2009-03-10 19:42:27

标签: .net asp.net linq-to-sql

我有一个Web项目,它使用自定义配置类在web.config中存储应用程序设置。我这样做是为了能够存储和访问web.config中基于服务器名称的配置设置。这样,当项目从开发,升级到生产时,我不必记得更改web.config设置,如连接字符串和其他可能与服务器不同的设置。这些类将根据部署的服务器从web.config中检索正确的配置设置。

这很有效。但是,现在我使用生成的dbml类将项目转换为使用Linq。这很好,但生成的类坚持使用web.config中的简单连接字符串。由于这些类是自动生成的,我不能简单地更改代码以使用我的自定义配置类。有人可以解释如何让生成的类调用我的自定义对象来检索正确的连接字符串吗?

谢谢!

5 个答案:

答案 0 :(得分:1)

将Data连接字符串显式提供给DataContext构造函数是一种更好的做法。这样,您的应用程序可以通过您的webconfig帮助程序获取正确的连接字符串,并且始终可以使用绝对正确的连接字符串提供datacontext。而不是依赖于Context从webconfig中选择合适的一个。

答案 1 :(得分:1)

替代方案:

web.config文件的<connectionStrings>元素可以采用configSource属性,该属性指定保存该部分数据的XML文件的名称。我把它设置为:

 <connectionStrings configSource="connections.config" />

将不同的connections.config与每台PC上的环境特定信息放在一起。

答案 2 :(得分:0)

我没有答案,但您可能想看一下Microsoft实施中央配置服务的示例应用程序StockTrader,我相信使用Linq。我很长一段时间没有看过它,但它可以为你提供你正在寻找的洞察力。

很抱歉,我没有直接回答。

答案 3 :(得分:0)

好像你已经得到了答案,但我想我会提出这个问题:

public MyDataContext() : 
        base(global::System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString, mappingSource)
{
    OnCreated();
}

您可以手动修改.designer.cs部分类文件,并使用您自己的默认Context构造函数覆盖。

答案 4 :(得分:0)

您可以简单地将连接字符串作为参数传递给DataContext类的构造函数。

在这种情况下,只需在配置之前检索连接字符串,然后在创建DataContext时将其移交。