cto*_*orx 6 c# linq entity-framework navigation-properties
假设我有这些简化的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;}
}
Run Code Online (Sandbox Code Playgroud)
商业逻辑:
订单可以有多个PO,一个用于订单上的每个不同供应商(供应商在物料级别确定).
我如何选择性地包括儿童实体?
查询PO时,我想自动为订单和项目添加子项目.
我完成了这个,使用Include()...
Context.PurchaseOrders.Include("Orders.Items");
Run Code Online (Sandbox Code Playgroud)
这是它的工作并拉回相关实体,但是,我只想包含其VendorID与PurchaseOrder实体的VendorID匹配的Item实体.
对于传统的SQL,我只是在JOIN条件中包含它,但EF在内部构建它们.
我可以使用什么LINQ魔术告诉EF应用条件,而无需在实体之间手动创建JOIN?
您无法有选择地撤回符合特定条件的某些子实体。您能做的最好的事情就是自己手动过滤掉相关订单。
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 IEnumerable<Order> MatchingOrders {
get {
return this.Orders.Where(o => o.VendorId == this.VendorId);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7411 次 |
| 最近记录: |