ロールバックまたはコミットできる単一のトランザクションに多くのデータベース挿入をラップする必要があるDALがあります。多くのトランザクションでSQLデータベース接続を管理する
これを処理するベストプラクティスは何ですか?
我々は現在、次のことを行っている。
- DB接続とトランザクションを作成
- は、実行するアクションを表すすべてのクラスでコレクションを記入してください。コンストラクタ経由で接続を渡します。
- すべてのアクションクラスをループし、Publish()メソッドを呼び出します。
- 成功すれば(接続を閉じる)、エラー(接続を閉じる)ならロールバックします。
プロセスはいつかかかる可能性があり、プールされたデータベース接続が不足しているようです。トランザクションを管理するより良い方法はありますか?
これは、エンタープライズライブラリのデータアクセスのSQL 2008、.net 3.5および4.1バージョンを使用しています。
なぜ、すべてのクラスで挿入を行うために1つの接続のみを使用しているときに、プールされた接続が不足しているとしますか? – msvcyc
実際、明らかなように、私たちが見ているエラーは次のとおりです。プールから接続を取得する前にタイムアウト期間が経過しています。これは、プールされたすべての接続が使用中で、プールの最大サイズに達したために発生した可能性があります。 – user148515