在 Entity Framework Core 中,如何在不添加额外 Include 的情况下填充自引用导航集合(仅使用已跟踪的实体)?

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

我有一个名为

Position
的实体,其自身具有外键:
int Id;
int ParentId;
。这给了我两个导航属性:
Position Parent;
List<Position> Children;
。当我将整个表加载到 EF 上下文(跟踪)时,我希望 EF 填充这些属性而不发出额外的 SQL 连接(因为无论如何都会加载所有参与实体)。有什么方法可以在查询创建期间或之后实现此目的,也许类似于
db.Entry(positions[0]).Collection(x => x. Children).Load();
,但仅限于已跟踪的实体?

c# entity-framework-core navigation self-join
1个回答
0
投票

如果您已将所有相关位置加载为跟踪实体,那么您应该会发现在离开

Include
时关系已经填充。通常建议立即加载,因为如果没有它,EF 将仅填充跟踪缓存中的引用,这可能只是状态的不完整表示。如果您可以放心地假设所有相关位置均已加载并跟踪,那么您可以忽略添加
Include
。我可能会在那里发表评论,解释说此时所有位置都应该已加载。任何优化或重构都可能会破坏您当前的预期行为。

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