Dapper intento no válido de llamar a Read cuando el lector está cerrado

asp.net c# dapper

Pregunta

En primer lugar, me siento agradecido por todo lo que tengo método que devuelve llamada (Fecha de lectura) con (Sql Data Reader "dr") pero después de la devolución de datos estoy tratando de usar si dr.read() y obtengo un error

Intento no válido de llamar a Read cuando el lector está cerrado

public Calss DB{
public SqlDataReader ReadQuery( string query)
{
    SqlDataReader dr;

    var ConnecRepository = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
    using (var connection = new SqlConnection(ConnecRepository))
    {
        connection.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = connection;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = query;
        return dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }
}
// Page
namespace HomePage
DB db = New DB();
protected void Page_Load(object sender, EventArgs e)
{
string query = query;
SqlDataReader dr = db.ReadQuery(string.Format(query, Email, Password));
}
if (dr.Read())>>>> here the problem is Invalid attempt to call Read when reader is closed
{
}
}

Respuesta aceptada

SqlDataReader requiere una db connection activa para revisar los registros. En su caso, está cerrando la conexión activa y devolviendo el objeto readar y luego tratando de recuperar registros. Es por eso que estás recibiendo un error. el lector esta cerrado

Sugiero dos enfoques para resolver sus problemas.

1. Lea los datos de los data readar cuando data readar activo como

 SqlDataReader dr;

        var ConnecRepository = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
           using (var connection = new SqlConnection(ConnecRepository))
           {
               connection.Open();
               SqlCommand cmd = new SqlCommand();
               cmd.Connection = connection;
               cmd.CommandType = CommandType.Text;
               cmd.CommandText = query;
               dr = cmd.ExecuteReader();
          if (dr.Read()){
                 \\your logic here}
        } 

2. Use el adaptador para completar el conjunto de datos y devolver el conjunto de datos / tabla de datos al programa de llamadas o a la página web. Puede encontrar varias muestras de cómo usar dataapter para completar el conjunto de datos.

Espero que esto ayude. Avísame si necesitas más asistencia. ¡¡feliz de ayudar!!



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué