Dapper에서 MultiMapping과 QueryMultiple을 함께 사용하는 방법이 있습니까?

dapper

문제

함께 실행할 필요가있는 몇 가지 쿼리가 있으며 QueryMultiple 기능을 사용하여 쿼리를 수행 할 수 있습니다.

그러나이 경우에는 어떻게 멀티 맵핑을 사용할 수 있는지 알 수 없었습니다.

아무도 이것을 달성하는 방법을 알고 있습니까?

수락 된 답변

나는 이것이 당신이 찾고있는 것이라고 생각한다. 당신이 실행하려고하는 쿼리의 예제 없이는 말하기 어렵다.

var sql = @"Select * 
            From Parent 
            Left Join Child on Child.ParentID = Parent.ParentID 
            Where Parent.ParentID = @id
            ... more queries";

using(var reader = connection.QueryMultiple(sql, new {id=selectedId}))
{
    var stuff = reader.Read<Parent, Child, Parent>(
        (p,c)=> 
        {
            p.Child = c;
            return p;
        }, splitOn: "ChildId").Single();
    // Continue to read from the other queries in your sql.
}

기본적으로 SqlMapper.GridReaderRead 메서드는 Query 확장 메서드와 비슷합니다. splitOn 매개 변수는 두 가지 이상의 제네릭 형식을 사용하는 오버로드 중 하나만 사용합니다.


인기 답변

다른 스레드에서 가져온 빠른 예제 : 하위 개체 값 가져 오기 방법

var sql = 
@"
select * from PROFILES where profileId= @id
select * from PROFILEIMAGES where OWNER_PROFILESIDFK = @id";

using (var multi = connection.QueryMultiple(sql, new {id=selectedId}))
{
   var profile = multi.Read<Models.PROFILE>().Single();
   profile.ProfileImages = multi.Read<Model.PROFILEIMAGES>().ToList();
} 

각 쿼리는 객체 세트를 반환하며이 객체 세트는 엔티티에 매핑 될 수 있습니다.




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