Dapper無法將'Dapper.WrappedReader'類型的對象強制轉換為'System.Data.SqlClient.SqlDataReader'

c# dapper

嘗試使用dapper獲取SqlDataReader但在標題上獲取錯誤。以下是代碼:

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

一般承認的答案

從源代碼中可以看出WrappedReader是:

#if DNXCORE50
    internal class WrappedReader : WrappedDataReader

或者

#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 reader並從那時起使用它。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow