Entity framework 使用.Include()急切地加载多个实体

Entity framework 使用.Include()急切地加载多个实体,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我想急切地加载一个具有特定Id的a类实例。然后我想。包括与某个实例相关的每个B类实例和。包括与B实例相关的每个C类实例 这不起作用: var schoolyear = _context.Schoolyears .Include(s => s.SchoolclassCodes) .Include(s => s.TimeTableEntries) .SingleOrDefault(s =>

我想急切地加载一个具有特定Id的a类实例。然后我想。包括与某个实例相关的每个B类实例和。包括与B实例相关的每个C类实例

这不起作用:

var schoolyear = _context.Schoolyears
                .Include(s => s.SchoolclassCodes)
                .Include(s => s.TimeTableEntries)
                .SingleOrDefault(s => s.Id == schoolyearId);
最后一个.Include位于错误的级别。它必须与.school类代码相关

对于stronly typed.Include()是不可能的,还是必须使用弱化类型样式:

var schoolyear = _context.Schoolyears
                       .Include("SchoolclassCode.TimeTableEntries")
                       .SingleOrDefault(s => s.Id == schoolyearId);


class Schoolyear
{
  public int Id { get; set;}
  public ICollection<SchoolclassCode> {get;set;}
}

class SchoolclassCode
{
   public ICollection<TimeTableEntry> {get;set;}

}

class TimeTableEntry
{
}
var schoolyear=\u context.Schoolyears
.Include(“SchoolclassCode.TimeTableEntries”)
.SingleOrDefault(s=>s.Id==学年Id);
班级学年
{
公共int Id{get;set;}
公共ICollection{get;set;}
}
班级代码
{
公共ICollection{get;set;}
}
类时间表条目
{
}

您也可以使用stongly类型的方法来完成

只需在
Include
中进行选择查询,直到到达层次结构中应加载的最后一个实体:

var schoolyear = _context.Schoolyears
                     .Include(s => s.SchoolclassCodes
                         .Select(t => t.TimeTableEntries));

是的,它甚至对我所需要的单打或默认有效,谢谢。似乎我忽略了该站点上的.Select(),它就在那里: