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

时间:2015-08-11 15:16:29

标签: c# entity-framework loading explicit

假设我有类似

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

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

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

执行此类操作会导致大量查询

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

我知道Include,但这太慢了。我希望在过滤后加载所有内容。

1 个答案:

答案 0 :(得分:1)

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

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

您可以在此处query加入此查询,不要重复此条件。

然后设置值:

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