EF 6 include() 不解决 N + 1
EF 6 include() not solving N + 1
我有一个 class 类似于
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 仍然显示 Select N + 1??我以为 include 应该处理这个?
编辑:问题似乎是在序列化过程中出现的?我只是想 return 通过 Web API 分页的对象列表。
在这种情况下,相关实体具有延迟加载关系。
我的原始模型(Contact)上的一个属性本身有一个 phone 数字列表。因此,尽管没有对联系人进行延迟评估,但每个联系人都有自己的 phone 个延迟加载的号码,因为它是虚拟的并且没有明确包含在内。
我有一个 class 类似于
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 仍然显示 Select N + 1??我以为 include 应该处理这个?
编辑:问题似乎是在序列化过程中出现的?我只是想 return 通过 Web API 分页的对象列表。
在这种情况下,相关实体具有延迟加载关系。
我的原始模型(Contact)上的一个属性本身有一个 phone 数字列表。因此,尽管没有对联系人进行延迟评估,但每个联系人都有自己的 phone 个延迟加载的号码,因为它是虚拟的并且没有明确包含在内。