Многократное отображение Dapper - коллекции пустые

c# dapper

Вопрос

Я пытаюсь использовать Dapper, чтобы вернуть набор Акций и связанную с коллекцией ShareItems и ShareHistories один-ко-многим. Мой вызов 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 строки. (Если все элементы не находятся в одной строке) Есть аналогичный вопрос: заполнение списка в объекте с dapper

Изменить: есть также QueryMultiple - вы можете проверить это. Он позволяет возвращать несколько наборов результатов. Затем вы можете сопоставить свои сущности.

Несколько примеров запроса



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему