gpt4 book ai didi

c# - Entity Framework - 包含的导航属性的选择条件

转载 作者:太空狗 更新时间:2023-10-29 21:29:37 26 4
gpt4 key购买 nike

假设我有这些简化的 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,一个对应订单上的每个不同供应商(供应商在项目级别确定)。

我如何有选择地包含子实体?

查询 PO 时,我想自动包含订单和项目的子实体。

我使用 Include()...完成了这个

Context.PurchaseOrders.Include("Orders.Items");

这是它的工作并拉回相关实体,但是,我只想包括其 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);
}
}
}

关于c# - Entity Framework - 包含的导航属性的选择条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8333934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com