[英]Map to nested object using Dapper
I have an object that has 2 lists of classes.我有一个包含 2 个类列表的对象。
public class Order
{
int order_id;
double amount;
List<order_item> order_items;
List<order_shipment> order_shipments;
}
And here's how the objects should be mapped:以下是对象的映射方式:
SELECT * FROM Orders o
INNER JOIN Order_Items i ON i.order_id = o.order_id
INNER JOIN Order_Shipments s ON s.order_id = o.order_id
What's a way to map the above query to the nested class?将上述查询映射到嵌套类的方法是什么?
Give it a go:搏一搏:
var lookup = new Dictionary<int, Order>();
conn.Query<Order, order_item, order_shipment, Order>(@"
SELECT o.*,i.*,s.* FROM Orders o
INNER JOIN Order_Items i ON i.order_id = o.order_id
INNER JOIN Order_Shipments s ON s.order_id = o.order_id
", (o, i, s) => {
Order order;
if (!lookup.TryGetValue(o.order_id, out order))
lookup.Add(o.order_id, order = o);
order.order_items = order.order_items ?? new List<order_item>();
order.order_items.Add(i);
order.order_shipments = order.order_shipments ?? new List<order_shipment>();
order.order_shipments.Add(s);
return order;
}).AsQueryable();
var result = lookup.Values;
See: How do I map lists of nested objects with Dapper请参阅: 如何使用 Dapper 映射嵌套对象列表
Update:更新:
Thanks, @Palle Due for pointing out.谢谢, @Palle Due指出。 You should also add
splitOn
parameter based on first column of tables as follows:(Assuming first column of Order_Items
is order_item_id
and Order_Shipment
is order_shipment_id
)您还应该根据表的第一列添加
splitOn
参数,如下所示:(假设Order_Items
第一列是order_item_id
和Order_Shipment
是order_shipment_id
)
splitOn: "order_id, order_item_id, order_shipment_id"
See: Correct use of Multimapping in Dapper请参阅: 在 Dapper 中正确使用多重映射
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.