さて、デリゲート ドライバーを適切にセットアップすることができましたが、接続プーリングが依然として多くの問題を引き起こしています。
ドキュメントに記載されている説明から、接続プールは次のように機能するはずです。
- 単一のグローバル接続オブジェクトに DBXPool ドライバー デリゲートを設定する
- データベースへのすべての呼び出しにこの接続オブジェクトを使用します
- 各 DB 呼び出しは、デリゲート ドライバーを介して、接続プールが所有するそのスレッドに固有の接続に自動的にルーティングされます。
実際には、すべてがまだグローバル接続オブジェクトによって処理されているように見え、複数の同時スレッドから DB クエリを実行しようとすると、あらゆる種類の奇妙な競合状態とクラッシュが発生します。
参考までに、DBX 固有のコンポーネントはあまり定義していません。通常、Connection.Execute
メソッドを呼び出してクエリを実行します。
私が間違っていることは何か分かりますか?どこかで手順が抜けているのでしょうか、それとも DBXPool デリゲート ドライバーがどのように機能するかをよく理解していませんか?