3

ASP.NET C#アプリケーションの場合、LINQ to SQLを使用してSQLデータベースを照会したいと思います。このデータベースでは、web.configファイルに接続文字列を定義しています。 Visual Studio 2010でウィザードを使用してLINQクラスを作成しました。しかし、検査時に.dbmlファイルに明示的に(私のdevシステムで)使用しているデータベース名と接続文字列が含まれています。また、.designer.csファイルに明示的にデータベース名が付けられています。例えばLINQ to SQLデータベース接続を完全に構成/汎用化する方法を教えてください。

、私の.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ファイルを変更するだけでよいと思います。

静的な設定を製品のリリースビルドにコンパイルまたはリリースする必要がないように、私の顧客がすべてを1か所で構成できるように、これをどのように設定するのですか?

ありがとうございました。

答えて

4

チェックこのexplanation

あなたのコンフィグファイルから取り出された接続文字列を使用してデータコンテキストを初期化することができます。これは、デザイナーファイルで使用されるデフォルトの接続文字列をオーバーライドします。

独自の部分的DataContextクラスを作成し、デフォルトコンストラクタで呼び出されるOnCreated partialメソッドを追加する方法もあります。ここでは、web.config ConnectionStringセクションからConnectionStringを読み込んでいる単純な実装を示します。

Partial class MyDataContext 
    { 
     partial void OnCreated() 
     { 
      this.Connection.ConnectionString = 
      ConfigurationManager.ConnectionStrings["myconnection"].ConnectionString; 
     } 
    } 
関連する問題