2017-06-13 63 views
0

1つのクエリに対して複数のコレクション(1対多参照)をオブジェクトにマップしようとしています。オブジェクトは、次のようなものです:私は、私に次のような私が望むすべて、返す単一のクエリ作成したDapper - 1つのクエリで複数の1対多をマッピングする

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

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]を、私はNugetを通じてDapperのを追加しましたし、 Query拡張メソッドでは、複数の型を連続してマップすることができません。上記のクエリをDapper.NETを通じて上記のオブジェクトにどのようにマッピングできますか?

ありがとうございました!

+0

ItemDetail、ItemHistory、ItemOrderクラスを追加してください。 –

答えて

0

Dapperは、ID列の名前がId/idであることを前提にしてクエリ行を分割できます(splitOnパラメータで構成できます)。
また、リストを収集するためにQueryMultipleを使用する必要があります(ItemDetail ...)

関連する問題