SqlCommand の ExecuteNonQuery() と ExecuteReader() を抽象化する Database クラスがあります。ブロックを使用して Sqlconnection と SqlCommand をラップするため、CustomExecuteReader() が呼び出された後に SqlDataReader が閉じられるため、ビジネス レベル レイヤーで SqlReaderResultSet を読み取ることができません。以下のコード。フィードバックをありがとう。
public static SqlDataReader SqlReaderResultSet { get; set; }
public static SqlDataReader CustomExecuteReader(string storedProc)
{
using (var conn = new SqlConnection(ConnectionString))
{
var cmd = new SqlCommand(storedProc, conn) {CommandType = CommandType.StoredProcedure};
try
{
conn.Open();
SqlReaderResultSet = cmd.ExecuteReader();
}
catch (InvalidOperationException)
{
if (conn.State.Equals(ConnectionState.Closed))
conn.Open();
}
finally
{
conn.Close();
}
}
return SqlReaderResultSet;
}