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 는 모두 기본 SqlDataReader 를 가져올 수있는 Reader 속성을 정의합니다. 따라서 코드를 다음과 같이 변경하십시오.

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

또는:

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

말했다되고, 당신은 실제로 당신의 원본 (포장) 리더를 사용할 수 있습니다 using 절 -이 기회에 반응을 얻을 것이다 그런 식으로 .Dispose() . 그런 식으로하면, 당신은 using 절의 본문에 SQL 리더를 가져 와서 그때부터 사용할 수 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow