Где произошла перегрузка DbQuery.Include(), которая принимает лямбда?

Я только что объявил некоторые модели кода для нового проекта, который использует EntityFramework.

public class BlogEntry
{
    public long Id { get; set; }
    public long AuthorId { get; set; }
    public DateTime PublishedStamp { get; set; }
    public string Title { get; set; }
    public string Text { get; set; }

    public virtual User Author { get; set; }
}

public class User
{
    public long Id { get; set; }
    public string Email { get; set; }
    // ...
}

class BlogDb : DbContext
{
    public DbSet<BlogEntry> Entries { get; set; }
    public DbSet<User> Users { get; set; }
}

Теперь предположим, что хочу получить 10 последних записей в блоге:

var entries = new BlogDb().Entries.OrderByDescending(...).Take(10).ToList();

Проблема в том, что доступ к entry.Author приведет к другому запросу базы данных. Вам не нужен отдельный такой запрос для каждой записи в блоге. Теперь я понимаю, что цель Include заключается именно в этом случае, поэтому я могу сказать:

var entries = new BlogDb().Entries.Include(e => e.Author).(...).ToList();

Однако этот метод, похоже, не существует. Существует только Include(string), например:

var entries = new BlogDb().Entries.Include("Author").(...).ToList();

но это раздражает, потому что он не проверяет время компиляции и будет упущен рефакторингом переименования. Конечно, версия с лямбдой - это "правильный" подход.

Куда пошел этот метод? Он больше не включен в EntityFramework?

(Я знаю, что я могу написать метод расширения для себя, чтобы достичь этого, поэтому вам не нужно это делать. Id просто хотел бы узнать, не пропадает ли что-то.)

Ответ 1

using System.Data.Entity;//ftw

В EF v4.1 и выше, но вам нужна ссылка, поскольку это метод расширения.


Изменить (благодаря @EastonJamesHarvey)

При использовании EF Core импорт должен быть:

using Microsoft.EntityFrameworkCore;