我正在寻求帮助,以识别和解决与我的代码中使用 Include 和 ThenInclude 语句相关的问题。具体来说,我在处理这些陈述时遇到了困难,非常感谢任何见解或指导。
// Load all pump types along with their pumps.
var allpumpTypes = hydraulicOptionsContext.PumpTypeVariants
.Include(pt => pt.PumpVariantCollection)
.ThenInclude(pv => pv.Manufacturer.PumpVariants)
.Include(pt => pt.OptionCircuitTypeCollection)
.ThenInclude(oct => oct.OptionPropertiesCollection)
.Include(pt => pt.OptionCircuitTypeCollection)
.ThenInclude(oct => oct.PumpTypeCollection)
.Include(pt => pt.OptionCircuitTypeCollection)
.ThenInclude(oct => oct.Option.CircuitTypeCollection)
.Include(pt => pt.OptionCircuitTypeCollection)
.ThenInclude(oct => oct.Option.OptionName)
.Include(pt => pt.OptionCircuitTypeCollection)
.ThenInclude(oct => oct.Option.Specification)
.Include(pt => pt.OptionPropertiesCollection)
.ThenInclude(opc => opc.OptionCircuitType)
.ThenInclude(oct => oct.Option)
.Include(pt => pt.OptionPropertiesCollection)
.ThenInclude(opc => opc.OptionCircuitType)
.ThenInclude(oct => oct.PumpTypeCollection)
.AsSplitQuery()
.AsNoTracking();
这似乎是 Include 和 ThenInclude 语句中循环关系的潜在问题,我不知道循环问题在哪里。你能帮我找到它吗?
我试图审查代码逻辑:检查 Include 和 ThenInclude 语句的目的以了解它们的预期功能并检查数据库模式:确认数据库模式中实体和导航属性之间的关系与 Include 和 ThenInclude 语句一致。
不同的是Include引用的是原表(
PumpTypeVariants
),不管它放在链中的什么位置,而ThenInclude引用的是最后一个包含的表
您将
OptionPropertiesCollection
包括在 OptionCircuitTypeCollection
和 PumpTypeVariants
下。也许最后两个 Includes 应该是 ThenIncludes 下OptionPropertiesCollection
?