環境変数に基づいてLinqの接続文字列をSqlに設定する必要があります。私は環境変数に基づいてweb.configから接続文字列を返す関数を持っていますが、どのようにLinqに常にこの "動的に作成された"接続文字列を使うようにしますか?Linq to Sql - 環境変数に基づいて接続文字列を動的に設定する
私はコンストラクタを使用して接続文字列を指定できますが、LinqDataSourceでdatacontextを使用するとどのように動作するのでしょうか?
環境変数に基づいてLinqの接続文字列をSqlに設定する必要があります。私は環境変数に基づいてweb.configから接続文字列を返す関数を持っていますが、どのようにLinqに常にこの "動的に作成された"接続文字列を使うようにしますか?Linq to Sql - 環境変数に基づいて接続文字列を動的に設定する
私はコンストラクタを使用して接続文字列を指定できますが、LinqDataSourceでdatacontextを使用するとどのように動作するのでしょうか?
用途:LinqDataSourceコントロールのために
MyDataClassesDataContext db = new MyDataClassesDataContext(dynamicConnString);
、ContextCreatingイベントインターセプトと、上記のように、手動でのDataContextを作成します。
protected void LinqDataSource_ContextCreating(object sender, LinqDataSourceContextEventArgs e)
{
e.ObjectInstance = new MyDataClassesDataContext (dynamicConnString);
}
MSDNから:
デフォルトでは、LinqDataSourceコントロールコントロール は、のタイプのインスタンスを作成します。 ContextTypeName プロパティでが指定されています。 LinqDataSourceコントロール は、 データコンテキストオブジェクトのデフォルトコンストラクタを呼び出して、オブジェクトの インスタンスを作成します。 デフォルト以外の コンストラクタを使用する必要があるか、またはContextTypeName プロパティで指定されている とは異なる オブジェクトを作成する必要があります。この場合、 はContextCreatingイベントを処理し、 は手動でデータコンテキスト オブジェクトを作成する必要があります。
DataContextクラスには、constructor that takes in a connection stringがあります。
あなたはすべてのページにイベントリスナーを追加したくない場合は、あなたがOnCreated()関数を実装する場合は、動的に接続文字列を変更することができ、このリンク http://goneale.com/2009/03/26/untie-linq-to-sql-connection-string-from-application-settings/
に従うことができます。この関数は部分的な関数であり、dbmlが存在する場所以外の別のファイルに実装できます。詳細は
http://aspilham.blogspot.com/2011/01/how-do-i-set-connection-string-in-linq.html
は、LINQ to SQLデザイナを開き、この記事を参照して、デザイナー(スキーマ自体)の[プロパティ]タブを開いて、接続を展開し、にApplication Settings
を設定してくださいFalse
。セーブ。
これを閉じて、DataContextデザイナーファイル(dbml_name.designer.cs)を開き、DataContextコンストラクターを変更します。アプリケーション全体の設定を無効にしたときに、接続文字列がここにジャンプする方法がすぐにわかります。だから、ここで焦点を当てる部分はbase()
継承者を変更することです。あなた自身に合わせて以下の名前をConnStringに変更してください。私はまた、クラスにはDatabaseAttribute
があることに気付きました。私はそれが大きな役割を果たしているとは思わないし、接続設定に何らかの影響があります。
公共dbDataContext():ベース(ConfigurationManager.ConnectionStrings [ "MyConnString"]のConnectionString、mappingSource。)
開きますLINQプロジェクトで特色App.config
またはWeb.config
またSystem.Configuration
への参照が必要になりますSQLクラスが常駐し、接続文字列の名前を"MyConnString"という名前に変更します。
あなたは今、それが重要であるなどの名前の変更とエントリ全体をカットして、このようなWebアプリケーション、SilverlightのようなデータをアクセスするアプリケーションのApp.config
かWeb.config
のいずれかにそれを貼り付け、WPF、WCFしなければなりませんLINQ to SQLクラスに定義されているConfigurationManager
が、呼び出すアプリケーションが実行されている場所の.config
ファイルをLINQからSQLのクラスに関係なく検索するため、データにアクセスする呼び出しアプリケーションの構成ファイルを変更する定義されました。ご覧のとおり、これまでとは少し違った働きをしています。
右クリックし、LINQ to SQLクラスを含むDALまたはプロジェクトのプロパティを開き、[設定]タブの接続の文字列「アプリケーションの設定」の参照を削除します。
リビルド。すべての作業が完了しました。ファイルの検索で、データベース名が接続文字列に含まれていることを知っていれば、ストラングラーをチェックしてください。
LinqDataSourceでDataContextを使用する場合、これは機能しますか?例えば、私はここで、接続文字列を設定する方法を: ASP:LinqDataSourceコントロール> –
Ryan
をそれはい、できます。編集されました。 – JoshJordan