DbQuery.Include()的重载去哪里需要一个lambda?

我刚刚为一个使用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(); 

但是这很烦人,因为它没有编译时检查,并且会被重命名重构遗漏。 当然,与lambda的版本是“正确”的方法。

那个方法去了哪里? 它是否不再包含在EntityFramework中?

(我知道我可以为自己写一个扩展方法来实现这一点,所以你不需要,我只想知道我是否错过了一些东西。)

 using System.Data.Entity;//ftw 

它在EF v4.1及以上版本,但你需要一个参考,因为它是一个扩展方法。


编辑 (感谢@EastonJamesHarvey)

如果使用EF Core ,导入应该是:

 using Microsoft.EntityFrameworkCore;