Dapper ORM을 사용하여 하위 개체에 대한 값을 가져 오는 방법

c#-4.0 dapper orm

문제

다음과 같은 프로필 세부 정보를 검색하고 있습니다.

                var profiles = connection.Query<Models.PHOTOS_PERMISSIONS, Models.PROFILE, Models.PHOTOS_PERMISSIONS>(sql,
                    (p1, p2) => { p1.ID = profileID; return p1; }, 
                    new { ID = profileID }, 
                    splitOn: "OWNER_PROFILESIDFK, ID").AsQueryable();

profile 객체는 profileImages와 같은 다른 컬렉션을 포함합니다. 문제는 모든 하위 개체의 항목 수가 0입니다. 또한 저는 단지 profileImages에 대한 데이터 만 얻고 싶습니다.

자식 개체를 쿼리하기 위해 설정해야하는 것이 있습니까? 그렇다면 어느 수준을 지정할 수 있습니까?

나는 또한 멀티 맵핑을 시도했다.

                var profiles = connection.Query<Models.PHOTOS_PERMISSIONS, Models.PROFILE, Models.PHOTOS_PERMISSIONS>(sql,
                    (p1, p2) => { p1.ID = profileID; return p1; }, 
                    new { ID = profileID }, 
                    splitOn: "OWNER_PROFILESIDFK, ID").AsQueryable();

PHOTOS_PERMISSIONS.OWNER_PROFILESIDFK = PROFILE.ID

그리고 다음과 같은 오류가 발생했습니다 :

다중 매핑 API를 사용할 때 Id가 아닌 키가 있으면 splitOn 매개 변수를 설정하십시오. 매개 변수 이름 : splitOn

splitOn 텍스트의 변형을 시도했지만 여전히 동일한 오류가 발생합니다.

수락 된 답변

Dapper는이 상자와 같이 일대 다 매핑을 지원하지 않습니다. 이 질문을 확인해보십시오. 그래도 도움이 될 수 있습니다.

다중 매핑, 일대 다

PROFILEIMAGES 테이블에 PROFILES ID의 FK가있는 경우 - 2 회의 쿼리를 발행하고 GridReader를 사용할 수 있습니다.

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는 합법적입니까? 예, 이유를 알아보십시오.