以下のコードでは、Provider オブジェクトには DbConnection のインスタンスが 1 つしかありません。各リーダーは、同じ接続インスタンスを参照します。Microsoft のドキュメントによると、2 番目のリーダーは接続プールから 2 番目の接続を取得します。これは正しく動作します。
using (var reader1 as IDataReader = Provider.GetReader(sqlStatement1))
{
while(reader1.Read())
{
using (var reader2 as IDataReader = Provider.GetReader(sqlStatement2))
{
while(reader2.Read())
{
//Do stuff with both statements
}
}
}
}
Provider オブジェクトを使用している限り、接続を開いたままにしたいと思います。ただし、接続プールで接続を無駄にしたくありません。Provider.DbConnection.Close() を呼び出すと、両方の接続がプールに返されますか? もしそうなら、どうすれば2番目の接続を接続プールに戻すことができますか?