2017-06-13 2 views
0

Ich versuche, mehrere Sammlungen (Eins-zu-viele-Referenz) für eine einzelne Abfrage in ein Objekt zuordnen. Das Objekt ist wie folgt aus:Dapper - Mapping mehrere Eins-zu-viele mit einer einzigen Abfrage

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

ich eine einzelne Abfrage erstellt haben, die mir alles zurück, was ich will, wie folgt aus:

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, habe ich Dapper durch Nuget hinzugefügt und Die Erweiterungsmethode Query ermöglicht es mir nicht, mehrere Typen hintereinander zuzuordnen. Wie kann ich die obige Abfrage über Dapper.NET auf das Objekt oben abbilden?

Vielen Dank!

+0

Bitte fügen Sie ItemDetail, ItemHistory, ItemOrder-Klasse hinzu. –

Antwort

0

Dapper kann die Abfragereihe aufteilen, indem eine Annahme gemacht wird, dass Ihre Id-Spalten den Namen Id/id haben (Sie können dies über den Parameter splitOn konfigurieren).
Zusätzlich müssen Sie QueryMultiple verwenden, um Ihre Listen zu sammeln (ItemDetail ...)

Verwandte Themen