2012-02-16 7 views
1

私はデータベースアクセスを処理するためにVS 2010(C#.Net 4.0)でLinq2Sqlを使用しています。これはすべて素晴らしいです。特定のLinq2Sqlデザイナーコードオーバーライドを防ぐ

私のDataContextがWebアプリケーション(データアクセスレイヤー)とは別のレイヤーになっているので、呼び出し側Webアプリケーションweb.configファイルで接続文字列を使用するように設定しました。

最終結果では、Linq2Sqlデザイナーファイル(DB.designer.cs)に変更を加える必要があります。これは最初のコンストラクター引数(デフォルトではDB接続文字列の文字列)をオーバーライドして、次の:

System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString 

私は現在持っているように見える問題は、私はGUIデザイナーを経てデザイナーを更新(ドラッグ&パーツをドロップする)ときということです、それは戻って、ハードコード化された接続文字列にこのコード変更をリセットします。

これを防ぐために設定を変更できるかどうか教えていただけますか?あるいは部分クラスで何かをするのですか?それとも完全に別の方法でしょうか?

答えて

2

ここにはpartial methodsが便利です!ありがたいことに、LINQ2SQL DataContextには非常に便利なものがいくつかロードされています。 DataContextの名前がAutosDataContextであるとします。 DBMLの横に新しいクラスを作成し、AutosDataContextと呼んでください。あなたは更新時に、その上を歩いDBMLデザイナーせずに、カスタム接続文字列のロジックを追加するため

public partial class AutosDataContext 
    { 
     partial void OnCreated() 
     { 
      this.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString; 
     } 
    } 

部分OnCreated方法は、DataContextのがインスタンス化された直後に呼び出され、最適な場所になります:次のようにそれを記入。

+0

ありがとうございました。偉大な仕事に見えます;) – musefan

関連する問題