대퍼 멀티 매핑 - 컬렉션이 비어 있습니다.

c# dapper

문제

나는 Dapper를 사용하여 ShareItem과 ShareHistories의 공유 및 관련된 일대 다 컬렉션을 반환하려고 시도하고 있습니다. My Dapper 호출은 다음과 같습니다.

string sql =
    @"select s.Id, s.UserId, s.Name, si.ShareId as Id, si.Name as ItemName
    , sh.ShareId As Id, sh.DateShared, sh.SentTo 
    from Shares s 
    inner join ShareItems si on s.Id = si.ShareId
    inner join ShareHistory sh on s.Id = sh.ShareId
    where s.Id = @shareId";

    return conn.Query<Share, List<ShareItem>, List<ShareHistory>, Share>(
                sql,
                (share, shareItems, history) => 
                    { 
                      share.Items = shareItems; 
                      share.History = history; return share; 
                    },
                new { shareId = shareId }).Single();

SQL에서 쿼리를 실행하면 예상대로 데이터가 평평 해집니다. 그러나 Dapper를 통해 코드를 실행하면 Items 및 History 컬렉션이 다시 비어있게됩니다. splitOn 매개 변수로 주위를 망쳐 놓고 있었지만 이 질문 을 읽은 후에 splitOn이 무엇을하는지 이해했습니다. (이것은 Dapper 사이트 btw 어딘가에있는 것이 좋을 것입니다.) 그리고 나는 그 부분을 잘 처리하고 있다고 생각합니다. 그래서 내가 뭘 잘못하고 있니?

수락 된 답변

난 당신이 1 행에서 깊은 개체 그래프를 채울 수 있다고 생각하지 않습니다. (모든 항목이 하나의 행에 있지 않으면) 비슷한 질문 있습니다 말끔와 객체의 목록을 채우기는

편집 : 또한 QueryMultiple - 당신은 그것을 확인하고 싶을 수도 있습니다. 여러 결과 집합을 반환 할 수 있습니다. 그런 다음 엔티티를 매핑 할 수 있습니다.

여러 예제 쿼리




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