Dapper return result falla después de la enumeración

dapper

Pregunta

Tengo una función múltiple de consulta rápida que da salida a varias listas diferentes, excepto para la primera lista. Durante la depuración descubrí que cuando el código llega a la siguiente línea en Dapper, los resultados desaparecen:

public IEnumerable<T> Read<T>....
    var result = ReadDeferred<T>(gridIndex, deserializer.Func, typedIdentity); //result has correct db values here
    return buffered ? result.ToList() : result; //result = Enumeration yielded no results

La función ReadDeferred no procesa ningún código en la cláusula try o finally. ¿Por qué se pierde el valor del resultado en la enumeración?

Aquí está mi código que llama apuesto:

var results = con.QueryMultiple("GetInspections", p, commandType: CommandType.StoredProcedure, commandTimeout: 5000);
var inspectionDetails = new Inspection
{
    InspectionDetailList = results.Read<Inspection>().ToList(), <-- this one does not popuplate
    SOHList = results.Read<SOHPrograms>().ToList(),
    BuildingList = results.Read<Building>().ToList(),
    AdministratorList = results.Read<Employee>().ToList(),
    NotAdminList = results.Read<Employee>().ToList(),
    InspectionList = results.Read<InspectionList>().ToList()
};

return inspectionDetails;

He verificado que se devuelven conjuntos de resultados para cada lista de la consulta sql.

Respuesta popular

Este problema tenía una respuesta en dos partes, porque tenía dos errores de problema. El primero fue que estaba llamando a InspectionDetailList como una lista desde el interior del objeto Inspection que eliminé y el segundo fue para cambiar el código que llama a dapper para que use una instrucción using y llame las piezas de forma individual. Gracias a un amigo y a una de las publicaciones de desbordamiento que se encuentran aquí .

using(var results = con.QueryMultiple("GetInspections", p, commandType: CommandType.StoredProcedure, commandTimeout: 5000))
{
    var inspectionDetails = results.Read<Inspection>().First();
    inspectionDetails.OshList = results.Read<SOHPrograms>.ToList();
    inspectionDetails.BuildingList = results.Read<Building>.ToList(); 
}


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é