У меня есть классы C # Person и Note, которые сопоставляются с таблицами Sql Server и используются с Entity Framework. В модели данных 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))
0
jonnarosey 1 Мар 2018 в 16:24

1 ответ

Лучший ответ

В этом случае нет никакой пользы от использования Include.

Include используется для обеспечения быстрой загрузки связанных связанных типов сущностей (вместо ленивой загрузки по умолчанию). Это позволяет избежать множества запросов на загрузку каждого ссылочного экземпляра (например, при итерации по коллекции).

Но здесь вы не возвращаете никаких типов сущностей. Так что нетерпеливая или ленивая загрузка не имеет значения.

1
Richard 1 Мар 2018 в 16:27