C# Entity Framework 核心:如何在不包含供应商账单列表的情况下获取账单与供应商的关系?

C# Entity Framework Core: how do I get the relationship of the bill to the vendor without including the vendor's list of bills?

我正在尝试使用 Entity Framework Core 中的 linq 从数据库查询中排除关系。

我有一个数据库,其中有 table 个账单和 table 个供应商。

我想从 Vendor 中排除 List<Bill>,同时保留我正在查询的 BillVendor 信息。所以我可以从那个特定的 Bill 收集 Vendor 信息。 我目前的关系如下。

foundBills = db_context.Bills.Include(v => v.Vendor).Where(searchLambda).ToList();

是否有 .Exclude.Intersect 或我缺少的东西来排除循环关系?它占用了太多内存。

如果您为“一对多”关系正确配置了 BillVendor 模型 类,它们应该如下所示:

public class Vendor
{
    // ... other properties

    public Bill Bill { get; set; }
}

public class Bill
{
    // ... other properties

    public ICollection<Vendor> Vendors { get; set; }
}

按照这个逻辑,不应该有任何循环依赖,因为它就是这样工作的。

稍后您可以使用或不使用 Include,但是如果您不想在最终输出的 Vendor 中包含 Bill 信息,请为 [=14 创建单独的模型=] 和 Bill:

public class BillOutput
{
    public List<VendorOutput> Vendors { get; set; }
}


public class VendorOutput
{
    // ... other properties
}

及以后:

var finalOutput = db_context.Bills.Include(v => v.Vendor).Where(searchLambda).
                      Select(items => new BillOutput
                      {
                          Vendors = items.Select(item => new VendorOutput
                          {
                              // here you don't have the Bill Information
                          }
                      } )
                     .ToList();