Dapper: mapeo múltiple de uno a muchos con una sola consulta

c# dapper

Pregunta

Estoy intentando mapear múltiples colecciones (referencia de uno a muchos) para una sola consulta en un objeto. El objeto es como el siguiente:

public class Item {
    public int Id { get; set; }
    public string Name { get; set; }
    public List<ItemDetail> Details { get; set; }
    public List<ItemHistory> Histories { get; set; }
    public List<ItemOrder> Orders { get; set; }
}

He creado una sola consulta que me devuelve todo lo que quiero, como el siguiente:

SELECT
i.[Id], i.[Name],
detail.[Id] ItemDetailId, detail.[Description] ItemDetailDescription,
history.[Id] ItemHistoryId, history.[Date] ItemHistoryDate,
history.[Description] ItemHistoryDescription,
order.[Id] ItemOrderId, order.[Date] ItemOrderDate, order.[Quantity] ItemOrderQuantity

FROM
[dbo].[Items] i
inner join [dbo].[ItemDetails] detail on i.[Id] = detail.[ItemId]
inner join [dbo].[ItemHistories] history on i.[Id] = history.[ItemId]
inner join [dbo].[ItemOrders] order in i.[Id] = order.[ItemId]

De acuerdo, agregué Dapper a través de Nuget y el método de extensión Query no me permite mapear varios tipos en una fila. ¿Cómo puedo mapear la consulta anterior en el objeto de arriba a través de Dapper.NET?

Gracias a todos!

Respuesta popular

Dapper puede dividir la fila de consulta al suponer que sus columnas Id se denominan Id / id (puede configurar mediante el parámetro splitOn ).
Además, debe utilizar QueryMultiple para recopilar sus listas (ItemDetail ...)



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