Dapper No se puede convertir el objeto del tipo 'Dapper.WrappedReader' para escribir 'System.Data.SqlClient.SqlDataReader'

c# dapper

Pregunta

Intentando obtener SqlDataReader usando dapper pero obteniendo el error en el título. A continuación está el código:

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

Respuesta aceptada

Como puede ver en el código fuente , WrappedReader es:

#if DNXCORE50
    internal class WrappedReader : WrappedDataReader

O bien :

#else
    internal class WrappedReader : IDataReader, IWrappedDataReader

Tanto WrappedDataReader como IWrappedReader definen una propiedad Reader que le permitirá obtener el SqlDataReader subyacente. Por lo tanto, intente cambiar su código a:

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

O:

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

Dicho esto, es posible que desee utilizar realmente el lector original (envuelto) para su cláusula de using , de esa manera tendrá la oportunidad de reaccionar a .Dispose() . Si lo haces de esa manera, se puede conseguir que el lector sql en el cuerpo de su using la cláusula y utilizarlo a partir de entonces.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow