Clase de utilidad para Dapper ORM similar al patrón de repositorio

c# dapper

Pregunta

He creado los siguientes métodos de repositorio para Dapper ORM.

public SqlMapper.GridReader QueryMultiple(string query, object cmdParams = null, CommandType cmdType = CommandType.Text)
{
     SqlMapper.GridReader objMulti;
     var conn = GetSqlConnection();            
     objMulti = conn.QueryMultiple(query, cmdParams, commandTimeout: 0, commandType: cmdType);                                            
     return objMulti;
}

public IEnumerable<T> GetAll<T>(string query, object cmdParams = null, CommandType cmdType = CommandType.Text) where T : class
{
      IEnumerable<T> objList;
      using (var conn = GetSqlConnection())
      {
           objList = conn.Query<T>(query, param: cmdParams, commandTimeout:0, commandType: cmdType);
           conn.Close();
      }
      return objList;
}

El uso del método de consulta se ve bien y la conexión se cierra tan pronto como se completa la operación.

new DapperRepository().Query("zyx").ToList();

Pero querymultiple devuelve el lector de cuadrícula. Entonces, Dapper dispone tanto de la conexión como del lector después de que se realizan las operaciones de lectura. Por favor asesórate sobre mi enfoque.

using (SqlMapper.GridReader multiResult = new DapperRepository().QueryMultiple(sql, new { id = id }))
{
   var dbPRTGroup = multiResult.Read<Customer>().Single();
    XXXXX
}

Respuesta aceptada

Sí, lo hace.

De acuerdo con su último bloque de código, las operaciones de conexión y lectura están dispuestas al final. Esto también se garantiza mediante el uso de using la palabra clave en .NET Framework.



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