Onde foi a sobrecarga do DbQuery.Include () que leva um lambda?

Acabei de declarar alguns modelos de primeiro código para um novo projeto que usa EntityFramewor

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; }
}

Agora, suponha que eu queira recuperar as 10 entradas mais recentes do blog:

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

O problema agora é que acessarentry.Author causará outra consulta ao banco de dados. Você não deseja uma consulta separada para cada entrada do blog. Agora, entendo que o objetivo deInclude é exatamente esse caso, então posso dizer:

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

No entanto, esse método parece não existir. Existe apenas umInclude(string), como isso

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

mas isso é irritante porque não é verificado no tempo de compilação e a refatoração de renomeação será perdida. Certamente a versão com o lambda é a abordagem "correta".

Onde foi esse método? Não está mais incluído no EntityFramework?

(Eu sei que posso escrever um método de extensão para conseguir isso, então você não precisa. Gostaria de saber se estou perdendo alguma coisa.)

questionAnswers(2)

yourAnswerToTheQuestion