保持SqlDataReader在n层的层上打开

sim*_*yme 0 c# sqldatareader

我有一个Database类,它抽象出SqlCommand的ExecuteNonQuery()和ExecuteReader().由于各地使用块包裹的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;
    }
Run Code Online (Sandbox Code Playgroud)

Otá*_*cio 11

"我无法在业务级别层读取SqlReaderResultSet" - 您不应该这样做.应使用数据传输对象传递数据,而不是通过低级数据访问结构传递数据.