EF 6包括()不解决N + 1

时间:2015-01-19 23:27:24

标签: c# entity-framework lazy-loading entity-framework-6

我有一个类似于

的课程
 public class Entity
 {
    virtual ICollection<Contact> Contacts { get; set; }
    virtual ICollection<PhoneNumber> PhoneNumbers { get; set; }
 }

在存储库中我做

  return Context.Entities
                .Include(x => x.Contacts)
                .Include(x => x.PhoneNumbers)
                .AsNoTracking()
                .toList();

EFProf仍显示选择N + 1 ??我认为包括应该处理这个?

enter image description here

编辑:序列化期间似乎出现了问题?我只是想通过Web API返回一个分页对象列表。 enter image description here

1 个答案:

答案 0 :(得分:1)

在这种情况下,相关实体已经延迟加载关系。

我的原始模型(联系人)中的一个属性有一个电话号码列表。因此虽然联系人没有被懒惰地评估,但每个联系人都有自己的电话号码,因为它是虚拟的并且没有明确包含。