Dapper - Mappatura di uno-a-molti multipli con una singola query

c# dapper

Domanda

Sto cercando di mappare più raccolte (riferimento uno-a-molti) per una singola query in un oggetto. L'oggetto è come il seguente:

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; }
}

Ho creato una singola query che mi restituisce tutto ciò che desidero, come il seguente:

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]

Ok, ho aggiunto Dapper tramite Nuget e il metodo di estensione Query non mi consente di mappare più tipi in una riga. Come posso mappare la query sopra nell'oggetto sopra tramite Dapper.NET?

Grazie a tutti!

Risposta popolare

Dapper può dividere la riga della query ipotizzando che le colonne Id siano denominate Id / id (è possibile configurare mediante il parametro splitOn ).
Inoltre, è necessario utilizzare QueryMultiple per raccogliere gli elenchi (ItemDetail ...)



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow