假设我有这些简化的 EF 生成实体......
public class PurchaseOrder
{
public int POID {get;set;}
public int OrderID {get;set;}
public int VendorID {get;set;}
public IEnumerable<Order> Orders {get;set;}
}
public class Order
{
public int OrderID {get;set;}
public decimal Price {get;set;}
public IEnumerable<Item> Items {get;set;}
}
public class Item
{
public int OrderID {get; set;}
public string SKU {get;set;}
public int VendorID {get;set;}
public Order Order {get;set;}
}
商业逻辑:
一个订单可以有多个采购订单,订单上的每个不同供应商都有一个采购订单(供应商在项目级别确定)。
如何选择性地包含子实体?
在查询 PO 时,我想自动包含 Order 和 Item 的子实体。
我做到了这一点,使用 Include()...
Context.PurchaseOrders.Include("Orders.Items");
这完成了它的工作并撤回了相关实体,但是,我只想包括其 VendorID 与 PurchaseOrder 实体的 VendorID 匹配的 Item 实体。
对于传统的 SQL,我只是将其包含在 JOIN 条件中,但 EF 在内部构建它们。
我可以使用什么 LINQ 魔法告诉 EF 应用条件,而无需手动创建实体之间的 JOIN?