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 个供应商。
- 每个
Bill
有1个Vendor
- 每个
Vendor
有很多Bills
我想从 Vendor
中排除 List<Bill>
,同时保留我正在查询的 Bill
的 Vendor
信息。所以我可以从那个特定的 Bill
收集 Vendor
信息。
我目前的关系如下。
foundBills = db_context.Bills.Include(v => v.Vendor).Where(searchLambda).ToList();
是否有 .Exclude
或 .Intersect
或我缺少的东西来排除循环关系?它占用了太多内存。
如果您为“一对多”关系正确配置了 Bill
和 Vendor
模型 类,它们应该如下所示:
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();
我正在尝试使用 Entity Framework Core 中的 linq 从数据库查询中排除关系。
我有一个数据库,其中有 table 个账单和 table 个供应商。
- 每个
Bill
有1个Vendor
- 每个
Vendor
有很多Bills
我想从 Vendor
中排除 List<Bill>
,同时保留我正在查询的 Bill
的 Vendor
信息。所以我可以从那个特定的 Bill
收集 Vendor
信息。
我目前的关系如下。
foundBills = db_context.Bills.Include(v => v.Vendor).Where(searchLambda).ToList();
是否有 .Exclude
或 .Intersect
或我缺少的东西来排除循环关系?它占用了太多内存。
如果您为“一对多”关系正确配置了 Bill
和 Vendor
模型 类,它们应该如下所示:
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();