Как получить значения для дочерних объектов, используя 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>();

Объект профиля содержит другие коллекции, такие как profileImages. Проблема в том, что количество элементов для каждого дочернего объекта равно нулю. Также я хочу только получить данные, скажем, 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 многократного отображения убедитесь, что вы установили параметр splitOn, если у вас есть ключи, отличные от имени параметра Id: splitOn

Я пробовал варианты того, что в моем тексте splitOn, но все еще получаю ту же ошибку.

Принятый ответ

Dapper не поддерживает отображение One-To-Many, подобное этому из коробки. Проверьте этот вопрос, это может помочь.

Мульти-сопоставление, один-ко-многим

Если ваша таблица PROFILEIMAGES имеет FK для идентификатора PROFILES, вы можете отправить 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
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему