【问题标题】:How do I make a LINQ to SQL database connection fully configurable / generic?如何使 LINQ to SQL 数据库连接完全可配置/通用?
【发布时间】:2011-02-10 01:03:18
【问题描述】:

对于 ASP.NET C# 应用程序,我想使用 LINQ to SQL 来查询 SQL 数据库,为此我在 web.config 文件中定义了一个连接字符串。我使用 Visual Studio 2010 中的向导来创建 LINQ 类。但是,经过检查,.dbml 文件明确包含我正在使用的数据库名称和连接字符串(在我的开发系统中),并且 .designer.cs 文件也明确命名了数据库。

例如,在我的 .dbml 文件中:

   <?xml version="1.0" encoding="utf-8"?>
<Database Name="MyDatabaseName" Class="MyLinqDataContext"
xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
<Connection Mode="WebSettings" ConnectionString="XXX"
SettingsObjectName="System.Configuration.ConfigurationManager.ConnectionStrings"
SettingsPropertyName="MyConnectionString" Provider="System.Data.SqlClient" />

在我的 .designer.cs 文件中:

[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="MyDatabaseName")]

虽然表结构是静态的,但我不知道我的客户会提前选择什么连接字符串和数据库名称,我希望他们只需更改 web.config 文件即可配置数据库连接。

如何进行设置,这样我就不必将静态开发设置编译或发布到我的产品的发布版本中,从而允许我的客户在一个地方配置所有内容?

谢谢。

【问题讨论】:

    标签: visual-studio-2010 linq-to-sql configuration connection-string datacontext


    【解决方案1】:

    查看explanation

    您可以使用从您的配置文件中获取的连接字符串来初始化您的数据上下文。这会覆盖设计器文件中使用的默认连接字符串。

    另一种方法是创建您自己的部分 DataContext 类并添加在默认构造函数中调用的 OnCreated 部分方法。这是一个简单的实现,我正在从 web.config ConnectionString 部分读取 ConnectionString。

      Partial class MyDataContext
        {
            partial void OnCreated()
            {
                this.Connection.ConnectionString = 
                 ConfigurationManager.ConnectionStrings["myconnection"].ConnectionString;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多