Dapper - Mapping mehrerer Eins-zu-Viele mit einer einzigen Abfrage

c# dapper

Frage

Ich versuche, mehrere Sammlungen (Eins-zu-viele-Referenzen) für eine einzelne Abfrage in ein Objekt abzubilden. Das Objekt ist wie folgt:

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 habe eine einzelne Abfrage erstellt, die mir alles zurückgibt, was ich möchte, z.

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, ich habe Dapper über Nuget hinzugefügt und die Query Erweiterungsmethode erlaubt mir nicht, mehrere Typen in einer Zeile abzubilden. Wie kann ich die obige Abfrage über Dapper.NET auf das Objekt oben abbilden?

Vielen Dank!

Beliebte Antwort

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



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow