尝试使用dapper获取SqlDataReader,但出现标题错误。
下面是代码:

using (var reader = (SqlDataReader)con.ExecuteReader(query))
                    {
                        while (reader.Read())
                        {
                            //do stuff here with reader
                        }
                    }

最佳答案

您可以see from the source codeWrappedReader为:

#if DNXCORE50
    internal class WrappedReader : WrappedDataReader


Or

#else
    internal class WrappedReader : IDataReader, IWrappedDataReader


WrappedDataReaderIWrappedReader都定义了一个Reader属性,该属性使您可以获取基础的SqlDataReader。因此,尝试将代码更改为:

(SqlDataReader)((IWrappedDataReader)con.ExecuteReader(query)).Reader { ... }


要么:

(SqlDataReader)((WrappedDataReader)con.ExecuteReader(query)).Reader { ... }


话虽这么说,您可能想为using子句实际使用原始的(包装的)阅读器-这样,它将有机会对.Dispose()做出反应。如果这样做,则可以在using子句的主体中获取sql阅读器,并从此开始使用它。

关于c# - Dapper无法将类型为“Dapper.WrappedReader”的对象转换为类型为“System.Data.SqlClient.SqlDataReader”的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31142700/

10-08 22:01
查看更多