需要帮助来确定“包含”和“然后包含”的问题

问题描述 投票:0回答:1

我正在寻求帮助,以识别和解决与我的代码中使用 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 语句一致。

c# entity-framework
1个回答
0
投票

不同的是Include引用的是原表(

PumpTypeVariants
),不管它放在链中的什么位置,而ThenInclude引用的是最后一个包含的表

您将

OptionPropertiesCollection
包括在
OptionCircuitTypeCollection
PumpTypeVariants
下。也许最后两个 Includes 应该是 ThenIncludes 下
OptionPropertiesCollection

© www.soinside.com 2019 - 2024. All rights reserved.