我有一个名为
Position
的实体,其自身具有外键:int Id;
和 int ParentId;
。这给了我两个导航属性:Position Parent;
和 List<Position> Children;
。当我将整个表加载到 EF 上下文(跟踪)时,我希望 EF 填充这些属性而不发出额外的 SQL 连接(因为无论如何都会加载所有参与实体)。有什么方法可以在查询创建期间或之后实现此目的,也许类似于 db.Entry(positions[0]).Collection(x => x. Children).Load();
,但仅限于已跟踪的实体?
如果您已将所有相关位置加载为跟踪实体,那么您应该会发现在离开
Include
时关系已经填充。通常建议立即加载,因为如果没有它,EF 将仅填充跟踪缓存中的引用,这可能只是状态的不完整表示。如果您可以放心地假设所有相关位置均已加载并跟踪,那么您可以忽略添加 Include
。我可能会在那里发表评论,解释说此时所有位置都应该已加载。任何优化或重构都可能会破坏您当前的预期行为。