Dapper multi-mapping - les collections sont vides

c# dapper

Question

J'essaie d'utiliser Dapper pour retourner un ensemble d'Actions et une collection un vers plusieurs associée de ShareItems et ShareHistories. Mon appel Dapper ressemble à ceci:

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();

Lorsque je lance la requête dans SQL, j'obtiens les données aplaties attendues. Cependant, lorsque je lance le code via Dapper, les collections Items et History reviennent vides. Je me faufilais avec le paramètre splitOn mais après avoir lu cette question, je comprends maintenant ce que splitOn est en train de faire (ce serait bien d'avoir quelque part sur le site de Dapper) et je pense que je me débrouille bien. Alors, qu'est-ce que je fais mal?

Réponse acceptée

Je ne pense pas que vous pouvez remplir un graphique d'objet profond à partir d'une ligne. (Sauf si tous les éléments sont dans cette ligne) Il y a une question similaire: Remplir une liste dans un objet avec dapper

Edit: Il y a aussi QueryMultiple - vous voudrez peut-être vérifier cela. Il permet le retour de plusieurs jeux de résultats. Vous pouvez ensuite cartographier vos entités.

Exemple de requête multiple




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi