Dapper 'Dapper.WrappedReader'型のオブジェクトを 'System.Data.SqlClient.SqlDataReader'型にキャストできません

c# dapper

質問

SqlDataReaderを使用して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