Dapper ORM을 사용하여 자식 개체의 값을 얻는 방법?

c#-4.0 dapper orm

문제

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

var profiles = connection.Query<Models.PROFILE>(
    "SELECT * FROM PROFILES WHERE ID=@ID", 
    new { ID = profileID }); // IEnumerable
var profile = profiles.First<Models.PROFILE>();

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