2009-04-21 6 views
1

私はいくつかの静的ユーティリティクラスを持つc#dllを持っています。彼らはすべてデータベースへのアクセスが必要です。そして、各クラスはそれ自身の接続を持っています。これは面倒なことになってきており、私は接続の単一のプロバイダを望んでいるので、クラスは単にConnProvider.Query(...)のようなことをすることができます。ConnProviderはすべてのユーティリティクラスがアクセスできる静的クラスです。私は、ConnProviderが何らかの接続プールを管理しなければならないと考えていますが、これを実装する正しい方法であるかどうか、もしそうであれば、内部がどのように見えるかは完全にはわかりません。私は正しい道にここにいますか?これはWebベースではなく、スレッドセーフは必須ではありません(しかし、将来的にはうれしいでしょう)。また、このdllを使用するアプリケーション/マシンがほんの一握りで、単純化するのに役立ちます。静的クラス間でデータベース接続を共有するための適切な設計?

答えて

0

ヘルパクラスをすべて、その中に接続を持つConnectionBaseからサブクラス化することは可能でしょうか?

+0

ええ、良い点。私もそうするだろうと思う。 –

0

各ConnProviderに新しい接続を作成し、ADO.NETとRDBMSで接続プーリングを管理させます。彼らはすでにあなたのためにそれを行うように設定され、最適化されています。

2

独自の接続プールを作成しないでください。フレームワークのものは十分に良いです。

作成した接続プロバイダーユーティリティは、実際に接続している構成情報を使用して接続を作成する必要があります。基本的には、クエリ文字列をカプセル化するだけです。

クエリを実行するたびに、プロバイダに接続して接続を作成し、作業を行い、接続を閉じます。フレームワークが物理接続をプールするようにします。

+0

を明確にするには、組み込みの接続プーリングを使用するために何か特別な処理を行う必要がありますか?または私のconnの文字列が同じである限り自動ですか?問題は、私はいくつかのヘルパー関数を実装するSqlConnection上のラッパーを持っているので、私はこの右を取得する方法がわからない –

+0

それは自動です。ラッパータイプが本当に必要ですか?それはどんな状態を加えますか?そうでない場合、C#3を使用している場合は、それらを拡張メソッドにすることができます。 –

0

接続プーリングを自分で処理しないでください。 .NETは、あなたが今まで以上に優れていることは確かです。接続のためにある種のシングルトンパターンのdbクラスとしてこれを実行することができます。

関連する問題