2009-03-10 10 views
1

web.configにアプリケーション設定を保存するカスタム設定クラスを使用するWebプロジェクトがあります。私は、サーバー名に基づいたweb.configの構成設定を保存してアクセスできるようにするためにこれを行います。こうすることで、プロジェクトが開発からステージング、プロダクションに移行するときに、接続文字列やサーバーごとに異なる設定などのweb.config設定を変更する必要はありません。クラスは、配備されているサーバーに基づいてweb.configから正しい設定を取得します。Linq dbmlクラスでweb.configのカスタム設定クラスを使用する方法

これはかなりうまくいきます。しかし、今は、生成されたdbmlクラスを使用してLinqを使用するようにプロジェクトを変換しました。これは素晴らしいですが、生成されたクラスはweb.configの単純な接続文字列を使用することを主張しています。これらのクラスは自動的に生成されるため、カスタム設定クラスを使用するようにコードを変更することはできません。誰かが、生成されたクラスが適切な接続文字列を取得するために私のカスタムオブジェクトを呼び出すことが可能な方法を説明することはできますか?

ありがとうございます!

答えて

1

明示的に接続文字列をDataContextコンストラクタに提供することをお勧めします。そうすれば、あなたのアプリケーションはあなたのwebconfigヘルパーを介して正しい接続文字列を取得することができ、datacontextは常に正しい接続文字列を提供することができます。むしろContextに依存してwebconfigから適切なものを選択してください。

+0

これは最も単純な方法です。コンテキストオブジェクトがパラメータとして接続文字列を受け入れることを理解しておく必要があります。ありがとう! – user69889

+0

問題はありません、私は非常に似たような、幸運を介して行ったので私は知っている! –

0

私は答えがわかりませんが、中央の構成サービスを実装しているLinqを使用していると思われるMicrosoftのStockTraderサンプルアプリケーションを見てみたいです。私は長いことそれを見ていないが、それはあなたが求めている洞察をあなたに提供することができる。

申し訳ありませんが、直接の回答はありません。

1

代替:web.configファイルの

<connectionStrings>要素は、そのセクションのためのデータを保持しているXMLファイルの名前を指定するconfigSource属性を取ることができます。ザ・各PCの環境に固有の情報と明確なconnections.configを入れ

<connectionStrings configSource="connections.config" /> 

:として私はそれを設定しました。

0

あなたはすでに答えを得たが、私は私がこれまで提供したいと思ったように思える:

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

あなたは手動であなたの.designer.cs部分クラスファイルを変更し、独自にそのデフォルトコンテキストのコンストラクタをオーバーライドすることができます。

0

DataContextクラスのコンストラクタに接続文字列をパラメータとして渡すだけで済みます。

この場合、前回の設定と同じように接続文字列を取得し、DataContextの作成時に渡すだけです。

関連する問題