4

皆さん、私は Enterprise Library (4.1) と特に DAAB を使用します。ここに質問があります:

  1. 最善のアプローチとその理由:

    • DbCommand を実行する必要があるたびに、DatabaseFactory.CreateDatabase(); を使用してデータベース インスタンスを作成します。

    • インスタンス化されたデータベース(同じCreateDatabase()静的メソッドを使用)とインスタンス化されたデータベースを返すパブリックプロパティのようなものを持つ基本クラスがあります。

  2. Database クラスのインスタンスを作成するのはどのように「重い」または速い/遅いですか? DbCommand が必要なときに毎回実行するとどうなりますか?

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

4

1 に答える 1

0

問題じゃない。データベース クラスの作成のオーバーヘッドは低くなります。

ただし、実際にデータベース接続を作成するとオーバーヘッドが高くなります。これが、Windows が接続プールを行う理由です。簡単に言えば、プロセスが最初に DB 接続を作成するときに、接続プールを調べて、まったく同じ接続文字列を持つ既存の接続を探します。見つからない場合は、新しいものを作成します (コストのかかる操作)。プロセスがそれを閉じて範囲外に出すとき、実際には DB への接続を閉じるのではなく、接続プールに入れます。同じプロセスが同じ接続文字列で別の接続を作成するまで待機します。次に、接続プールから既存のものを提供します。

(接続文字列の設定を介して) 接続プーリングをオフにすることはできますが、通常は非常に悪い考えです。

于 2014-01-31T14:32:15.223 に答える