显式加载

关闭 Lazy 加载后,你可以通过显式调用条目的 Load 方法来延迟加载实体。引用用于加载单个导航属性,而 Collection 用于获取集合。

Company company = context.Companies.FirstOrDefault();
// Load founder
context.Entry(company).Reference(m => m.Founder).Load();
// Load addresses
context.Entry(company).Collection(m => m.Addresses).Load();

正如在 *Eager 加载中一样,*你可以使用上述方法的重载来按名称加载 entiteis:

Company company = context.Companies.FirstOrDefault();
// Load founder
context.Entry(company).Reference("Founder").Load();
// Load addresses
context.Entry(company).Collection("Addresses").Load();

过滤相关实体

使用 Query 方法,我们可以过滤加载的相关实体:

Company company = context.Companies.FirstOrDefault();
// Load addresses which are in Baku
context.Entry(company)
    .Collection(m => m.Addresses)
    .Query()
    .Where(a => a.City.Name == "Baku")
    .Load();