在 Entity Framework 中显式加载先前获取的对象列表中的所有导航属性?

Explicitly loading all navigation properties in a list of previously fetched objects in Entity Framework?

假设我有类似的东西

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

并且数组中的每个对象都有一个名为 Department 的导航 属性。

有没有办法在单个查询中将所有 Department 属性显式加载到 SQL 服务器。

这样做会导致大量查询

remoteData.ForEach(rd =>
{
    rd.DepartmentReference.Load();
});

我知道 Include 但这太慢了。我想在过滤发生后加载所有内容。

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

var deps = dbContext.DepartmentReference.Where(o=>...).ToDictionary(o=>o.DataID);

在这里你可以加入这个查询query不重复条件。

然后设置值:

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