データアクセス用にMicrosoftアプリケーションブロックを使用してデータベースとやり取りするアプリケーションを検討しています。アプリケーションは関数を呼び出し、その関数にクエリを渡します。この関数は、(指定されたクエリの)データアクセスアプリケーションブロックを使用してDataReaderオブジェクトを作成し、DataReaderを呼び出し元に返します。データアクセス用にMicrosoftアプリケーションブロックを使用する場合、DataReader.Close()メソッドは接続オブジェクトを閉じますか?
アプリケーションは、完了したらDataReaderオブジェクトを閉じます。私が持っている質問は、DataReaderオブジェクトを閉じると自動的に基底の接続オブジェクトを閉じるかどうかです。データアクセスアプリケーションブロックがCommandBehavior.CloseConnectionフラグを持つコマンドオブジェクトを開くかどうかはわかりません。
質問:close()メソッドは、DataReaderオブジェクトで呼び出された場合
- 、それはまた、基になる接続オブジェクト(DataReaderオブジェクトは、Microsoftアプリケーションブロックを使用して作成されて閉じない - Database.ExecuteReader()メソッドを
- ない場合、我々はデータリーダーで行われた後、接続が解放されることを保証するための推奨方法は何ですか?事前に
おかげ
おかげでライアン。私の質問は特にMicrosoft Data Access Applicationブロックに関するものでした。この場合、接続を開いて管理するのはアプリケーションブロックライブラリです。私は、多数の接続を開いたままにするアプリケーションを見直していました。私はそれを見たとき、アプリケーションがデータリーダーオブジェクトを閉じるときに、アプリケーションブロックが接続を閉じないように見えました。だから私はそれがMAB内でどのように動作するかについていくつかの洞察を得たいと思っていました。 –
コメントに問題はありません。マイクロソフトでは、すべてのデータウェアハウスオブジェクトでこの機能を実行しています。あなたが見ているなら:http://msdn.microsoft.com/en-us/magazine/cc188705.aspxあなたは、読者が閉じても、下にある接続も閉じていることがわかります。それはDAABを扱うものです。 –
明示的に呼びたい場合は私は個人的には2番目の例を好む –