コード例 #1
0
        public async Task OnGetAsync(int?id, int?courseID)
        {
            Instructor             = new InstructorIndexData();
            Instructor.Instructors = await _context.Instructors
                                     .Include(i => i.OfficeAssignment)
                                     .Include(i => i.CourseAssignments)
                                     .ThenInclude(i => i.Course)
                                     .ThenInclude(i => i.Department)
                                     //.Include(i => i.CourseAssignments)
                                     //    .ThenInclude(i => i.Course)
                                     //        .ThenInclude(i => i.Enrollments)
                                     //            .ThenInclude(i => i.Student)
                                     //.AsNoTracking()
                                     .OrderBy(i => i.LastName)
                                     .ToListAsync();

            if (id != null)
            {
                InstructorID = id.Value;
                Instructor instructor = Instructor.Instructors.Where(
                    i => i.ID == id.Value).Single();
                Instructor.Courses = instructor.CourseAssignments.Select(s => s.Course);
            }

            if (courseID != null)
            {
                CourseID = courseID.Value;
                var selectedCourse = Instructor.Courses.Where(x => x.CourseID == courseID).Single();
                await _context.Entry(selectedCourse).Collection(x => x.Enrollments).LoadAsync();

                foreach (var enrollment in selectedCourse.Enrollments)
                {
                    await _context.Entry(enrollment).Reference(x => x.Student).LoadAsync();
                }
                Instructor.Enrollments = selectedCourse.Enrollments;
            }
        }