我正在使用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包含并加载具有延迟加载的导航属性,但这将导致数百个查询。
我正在寻找一种方法来拆分此查询,以便我可以先加载实例,例如地址,行业类型和因素。然后用第二个查询用剩下的来填充这些实体。
这可能还是有其他好的解决方案?
答案 0 :(得分:1)
如果您单独使用相同上下文的L2E查询,EF将自动将相关实体加入内存。
只需在你身边写一个测试。选择Websites
,然后使用相同的上下文和导航属性在单独的查询中Addresses
将正确填充!