我是否可以使用'Include'到预先加载查询元素来优化单个 linq 查询



我有一个c#类PersonNote,它们映射到Sql Server表并与实体框架一起使用。在Person数据模型中,Note是延迟加载的:

public class Person {
    public int PersonId { get; set; }
    public int PersonType { get; set; }
    public int? NoteId { get; set; }
    public virtual Note Note { get; set; }
}

当我使用 linq 查询时,在查询开始时显式使用 Include 有什么好处吗?这也是这样的:

personCount = myContext.Person.Include(p => p.Note).Count(
    m => m.PersonType == 3 &&
    (m.Note.Expires == null || m.Note.Expires > DateTime.Now))

比这更有效:

personCount = myContext.Person.Count(
    m => m.PersonType == 3 &&
    (m.Note.Expires == null || m.Note.Expires > DateTime.Now))

在这种情况下,使用 Include 没有任何好处。

Include 用于确保预先加载关联的链接实体类型(而不是默认的延迟加载(。这避免了加载每个引用实例的大量请求(例如,在循环访问集合时(。

但您在此处不返回任何实体类型。因此,急切或懒惰的加载是无关紧要的。

最新更新