¿Se maneja una cantidad variable de conjuntos de resultados en Petapoco o Dapper?

dapper petapoco

Pregunta

He utilizado QueryMultiple antes para manejar conjuntos de resultados múltiples, pero sabía la cantidad exacta de conjuntos de resultados que se devolvieron. En este caso, cuando QueryMultiple un proceso almacenado con QueryMultiple , la cantidad de conjuntos de resultados devueltos varía. ¿Es posible manejar esto en PetaPoco u otro orm como Dapper?

Respuesta aceptada

El método QueryMultiple de Dapper devuelve un GridReader ; un GridReader tiene una propiedad .IsConsumed que debería cambiar a true cuando haya leído todos los conjuntos de resultados disponibles, para que eso funcione:

using(var reader = conn.QueryMultiple(...)) {
    do {
        var data = reader.Read<...>().AsList();
        // ...
    } while(!reader.IsConsumed);
}

Alternativamente, Dapper tiene un método ExecuteReader que solo hace el "paquete de parámetros e invocar paso", y un método GetTypeDeserializer que expone solo el código "materializar una fila en un objeto", por lo que podría combinarlos manualmente, es decir:

using(var reader = conn.ExecuteReader(...)) {
    do {
        var parser = SqlMapper.GetTypeDeserializer(...);
        while(reader.Read()) {
            var obj = parser(reader);
            // ...
        }
    } while(reader.NextResult());
}

(No sé mucho sobre petapoco, lo siento)



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é