Dapper无法投射类型' Dapper.WrappedReader'键入' System.Data.SqlClient.SqlDataReader'

时间:2015-06-30 15:40:17

标签: c# dapper

尝试使用dapper获取SqlDataReader,但在标题上获取错误。 以下是代码:

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

1 个答案:

答案 0 :(得分:4)

尽可能SymbolVisitorWrappedReader是:

#if DNXCORE50
    internal class WrappedReader : WrappedDataReader

see from the source code

#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阅读器,然后再使用它。