SQL クエリをパラメーターとして受け取り、DataReader を返すヘルパー メソッドを作成したいと考えています。
私はそのようなことを書きました:
private IDataReader GetReader(String query)
{
try
{
var connection = dbProvider.CreateConnection();
var command = dbProvider.CreateCommand();
command.CommandText = query;
command.Connection = connection;
command.Connection.Open();
return command.ExecuteReader();
}
catch (Exception ex)
{
...
}
}
クライアント コードは次のようになります。
public List<FileGroupDetail> LoadGroupDetail()
{
String query = ...;
using (IDataReader reader = GetReader(query))
{
return reader.Select(...);
}
}
すべてのクライアント呼び出しに using ステートメントがあるにもかかわらず、接続プールに関連する問題があります (タイムアウト、トランスポート レベルのエラーなど)。
次のステップは、接続をパラメーターとして受け入れる GetReader のオーバーロードを追加することでした。それは良い習慣ですか、それともより良いパターンがありますか?