我想使用Include扩展来实现LINQ to Entity。
我有以下方案:
这是我的第一个LINQ(它正常工作):
var query = ctx1.Order_Details.Include("Order").Select( o => new
{ o.OrderID,
o.ProductID,
o.Order.OrderDate,
o.Order.OrderNumber
});
这是我的第二个LINQ(不起作用):
我的问题是为什么当我在“多对一”关系上实现Linq时,LINQ正常工作,当我尝试实现LINQ“内向外”(即一对多)时,它不起作用?
答案 0 :(得分:2)
第一个查询有效,因为每个订单明细只有一个相关的订单 - 您正在查看" n"的关系。透视(订单详情)。
在第二个查询中,您开始使用" 1"在Order和Order_Detail之间的1:n关系中,您试图获得一个单价 - 但是有一个集合(" n")相关联合价格和数量。您当前的方法仅适用于每个Order_Detail
只有一个相关的Order
。
如果您想以匿名类型获取相关的单价和数量集合,您可以执行以下操作:
var query2 = ctx1.Order.Include("Order_Details").Select( o => new
{ o.OrderID,
o.CustomerID,
UnitPrices = o.Order_Details.Select( od => od.UnitPrice),
Quantities = o.Order_Details.Select( od => od.Quantity)
});
答案 1 :(得分:0)
只是一个猜测,但是怎么样:
ctx1.Orders.... //not ctx1.Order