尝试使用dapper获取SqlDataReader
,但出现标题错误。
下面是代码:
using (var reader = (SqlDataReader)con.ExecuteReader(query))
{
while (reader.Read())
{
//do stuff here with reader
}
}
最佳答案
您可以see from the source code,WrappedReader
为:
#if DNXCORE50
internal class WrappedReader : WrappedDataReader
Or:
#else
internal class WrappedReader : IDataReader, IWrappedDataReader
WrappedDataReader
和IWrappedReader
都定义了一个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/