2013-12-10 3 views
0

Я хочу с нетерпением загрузить экземпляр класса A с определенным идентификатором. Затем я хочу. Включить каждый экземпляр класса B, связанный с экземпляром A, и. Включить каждый экземпляр C, связанный с экземпляром B.Загрузите несколько объектов с помощью .Include()

Это не работает:

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

Последние .INCLUDE на неправильном уровне. Он должен относиться к .SchoolclassCodes.

Разве это не возможно с stronly типизированных .INCLUDE() или я должен использовать weaked стиль типа:

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

ответ

1

Вы можете сделать это с stongly типизированного метода, а также.

Просто сделайте запрос на выборку в Include, пока не дойдете до последнего лица в иерархии, которые должны быть загружены:

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

Да даже работал с моей необходимой SingleOrDefault, спасибо. Кажется, я упустил возможность .Select() на этом сайте: http://msdn.microsoft.com/en-us/data/jj574232.aspx – Elisabeth

Смежные вопросы