1

我正在使用 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 包含并使用延迟加载加载该导航属性,但这将导致数百个查询。

我正在寻找一种方法来拆分此查询,以便我可以首先加载带有地址、IndustryType 和Factors 的实体。并通过第二个查询用其余的填充这些实体。

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

4

1 回答 1

2

如果您执行使用相同上下文的单独 L2E 查询,EF 将自动连接内存中的相关实体。

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

于 2013-07-10T13:39:50.663 回答