Dapper multi-mapping: las colecciones están vacías

c# dapper

Pregunta

Estoy intentando usar Dapper para devolver un conjunto de Acciones y una colección asociada de uno a varios de ShareItems y ShareHistories. Mi llamada Dapper se ve así:

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

Cuando ejecuto la consulta en SQL obtengo los datos aplanados que espero. Sin embargo, cuando ejecuto el código a través de Dapper, las colecciones de Artículos e Historial vuelven vacías. Estaba fastidiando con el parámetro splitOn, pero después de leer esta pregunta , ahora entiendo qué está haciendo splitOn (sería bueno tener algo en el sitio Dapper, por cierto) y creo que estoy manejando bien esa parte. Entonces, ¿qué estoy haciendo mal?

Respuesta aceptada

No creo que puedas poblar un gráfico de objetos profundos de 1 fila. (A menos que todos los elementos estén en esa fila) Hay una pregunta similar: llenar una lista en un objeto con dapper

Editar: También hay QueryMultiple ; es posible que desee verificarlo. Permite la devolución de múltiples resultados. Luego puede mapear sus entidades.

Ejemplo múltiple de consulta



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow