열거 후에 Dapper 반환 결과가 실패 함

dapper

문제

나는 매우 첫 번째 목록을 제외하고 여러 다른 목록을 출력하는 여러 가지 기능을 제공합니다. 디버깅하는 동안 나는 Dapper에서 코드가 다음 줄에 오면 결과가 사라진다는 것을 발견했습니다.

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

ReadDeferred 함수는 try 또는 finally 절의 코드를 처리하지 않습니다. 결과 값이 열거에서 손실되는 이유는 무엇입니까?

다음은 dapper를 호출하는 코드입니다.

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;

SQL 쿼리에서 각 목록에 대해 결과 집합이 반환되는지 확인했습니다.

인기 답변

이 문제는 두 가지 부분으로 나뉩니다. 두 가지 문제가 있었기 때문입니다. 첫 번째는 InspectionDetailList를 제거한 Inspection 객체 내부에서 목록으로 호출하고 두 번째는 using 문을 사용하고 개별적으로 조각을 호출하도록 dapper를 호출하는 코드를 변경하는 것이 었습니다. 친구와 여기 에있는 오버플로 게시물 중 하나에 감사드립니다.

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(); 
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.