使用entity framework加载嵌套实体/集合

我试图在一次调用中急切地加载所有相关实体或实体集合。 我的实体看起来像:

Class Person { public virtual long Id { get; set; } public virtual string FirstName { get; set; } public virtual string LastName { get; set; } } Class Employee { public virtual long Id { get; set; } public DateTime AppointmentDate { get; set; } public virtual ICollection Titles { get; set; } public virtual Person Person { get; set; } } Class EmployeeTitle { public virtual long Id { get; set; } public virtual bool IsCurrent { get; set; } public virtual Title Title { get; set; } } Class Title { public virtual long Id { get; set; } public virtual string Code { get; set; } public virtual string Description { get; set; } } 

我想要做的是,如果我调用一个方法加载所有Employees,结果应该包括Person,EmployeeTitles列表,包括Title的代码和描述我已经能够到达第三级,即获得Employee with person and list EmployeeTitle。 我不知道如何使用EmployeeTitle获取标题信息。 我得到的代码是:

 Context.Employees.Include("Person").Include(e => e.Titles).ToList(); 

请详细说明如何实现这一目标。 提前致谢。

你可以试试这个:

 Context.Employees .Include(e => e.Person) .Include(e => e.Titles.Select(t => t.Title)) .ToList(); 

Select可以应用于集合并加载对象图中下一级别的导航属性。

由于这是我搜索谷歌的第一页,我只想发布此内容。

Slauma的答案很好。 但如果您不打算实际使用该列表,建议使用Load()而不是ToList()。 所以它会是:

  Context.Employees .Include(e => e.Person) .Include(e => e.Titles.Select(t => t.Title)) .Load();