// GET: Instructor public ActionResult Index(int? id, int? courseID) { var viewModel = new InstructorIndexData(); viewModel.Instructors = db.Instructors .Include(i => i.OfficeAssignment) .Include(i => i.Courses.Select(c => c.Department)) .OrderBy(i => i.LastName); if (id != null) { ViewBag.InstructorID = id.Value; viewModel.Courses = viewModel.Instructors.Where( i => i.ID == id.Value).Single().Courses; } if (courseID != null) { ViewBag.CourseID = courseID.Value; // Lazy loading //viewModel.Enrollments = viewModel.Courses.Where( // x => x.CourseID == courseID).Single().Enrollments; // Explicit loading var selectedCourse = viewModel.Courses.Where(x => x.CourseID == courseID).Single(); db.Entry(selectedCourse).Collection(x => x.Enrollments).Load(); foreach (Enrollment enrollment in selectedCourse.Enrollments) { db.Entry(enrollment).Reference(x => x.Student).Load(); } viewModel.Enrollments = selectedCourse.Enrollments; } return View(viewModel); }
// // GET: /Instructor/ public ViewResult Index(Int32? id, Int32? courseID) { #region Eager Loading //var viewModel = new InstructorIndexData(); //viewModel.Instructors = db.Instructors // .Include(i => i.Courses.Select(c => c.Department)) // .OrderBy(i => i.LastName); //if (null != id) //{ // //Fetch the matching courses for the selected instructor. // ViewBag.PersonID = id; // viewModel.Courses = viewModel.Instructors.Where(i => i.PersonID == id.Value) // .Single().Courses; //} //if (null != courseID) //{ // //Fetchthe matching enrollments for the selected course. // ViewBag.CourseID = courseID.Value; // viewModel.Enrollments = viewModel.Courses.Where(c => c.CourseID == courseID) // .Single().Enrollments; //} //return View(viewModel); #endregion Eager Loading #region Explicit Loading var viewModel = new InstructorIndexData(); viewModel.Instructors = this._db.Instructors .Include(i => i.Courses.Select(c => c.Department)) .OrderBy(i => i.LastName); if (id != null) { ViewBag.PersonID = id.Value; viewModel.Courses = viewModel.Instructors .Where(i => i.PersonID == id.Value) .Single() .Courses; } if (null != courseID) { ViewBag.CourseID = courseID.Value; var selectedCourse = viewModel.Courses .Where(c => c.CourseID == courseID.Value) .Single(); //Use the Collection method to explicitly load a collection of entities. this._db.Entry(selectedCourse).Collection(x => x.Enrollments).Load(); foreach (var enrollment in selectedCourse.Enrollments) { //Use the Reference method to explicitly load an entity. this._db.Entry(enrollment).Reference(x => x.Student).Load(); } viewModel.Enrollments = selectedCourse.Enrollments; } return View(viewModel); #endregion Explicit Loading }