拆分包含多个查询的查询

时间:2013-07-10 11:19:39

标签: entity-framework entity-framework-5

我正在使用EF5 Code First,并且有一个如下查询:

        var query = DbSet.Include(ent => ent.Websites)
            .Include(ent => ent.Addresses)
            .Include(ent => ent.IndustryType)
            .Include(ent => ent.Factors)
            .Include(ent => ent.Factors.Select(fact => fact.Objectives))
            .Include(ent => ent.DmpNodes)
            .Include(ent => ent.DmpNodes.Select(node => node.DmpNodeConnections));

如果我使用超过4个包含,则查询执行速度非常慢。我已经知道为什么会这样。

我可以省略例如DmpNodes包含并加载具有延迟加载的导航属性,但这将导致数百个查询。

我正在寻找一种方法来拆分此查询,以便我可以先加载实例,例如地址,行业类型和因素。然后用第二个查询用剩下的来填充这些实体。

这可能还是有其他好的解决方案?

1 个答案:

答案 0 :(得分:1)

如果您单独使用相同上下文的L2E查询,EF将自动将相关实体加入内存。

只需在你身边写一个测试。选择Websites,然后使用相同的上下文和导航属性在单独的查询中Addresses将正确填充!