C# 是否在Entity Framework中显式加载以前获取的对象列表中的所有导航属性?

C# 是否在Entity Framework中显式加载以前获取的对象列表中的所有导航属性?,c#,entity-framework,loading,explicit,C#,Entity Framework,Loading,Explicit,假设我有 var remoteData = query.Where(s => <conditions here>).ToArray(); 我知道包括,但那太慢了。我想在过滤完成后加载所有内容。否,如果您想更快地获取数据,您应该在单独的查询中选择相关实体,如下所示: var deps = dbContext.DepartmentReference.Where(o=>...).ToDictionary(o=>o.DataID); 在这里,您可以在查询中加入此查询,

假设我有

 var remoteData = query.Where(s => <conditions here>).ToArray();

我知道
包括
,但那太慢了。我想在过滤完成后加载所有内容。

否,如果您想更快地获取数据,您应该在单独的查询中选择相关实体,如下所示:

var deps = dbContext.DepartmentReference.Where(o=>...).ToDictionary(o=>o.DataID);
在这里,您可以在
查询中加入此查询,以避免重复条件

然后设置值:

remoteData.ForEach(rd =>
{
    rd.DepartmentReference = deps[rd.ID];
});

我相信在你的情况下,打电话给ToArray会迫使你承担责任。如果您只需要部门本身,您可以使用对象初始化。@B先生,您能详细解释一下吗?这会产生与我尝试的where之前的Include set相同的查询,但速度太慢。@Para我的错,我更改了答案depts[rd.ID]之后为什么会有.ToArray()?DocumentReference应该引用一个对象,而不是array@Para我想,这是一个收藏,所以更新了答案非常感谢,这似乎很有效。但这不会导致更新操作出现问题。它不会破坏EF的参考系统吗?我只是问:)。我认为您正在用另一个实体替换一个实体,即使它们具有相同的id并指向数据库中的相同条目。
remoteData.ForEach(rd =>
{
    rd.DepartmentReference = deps[rd.ID];
});