Beispiel #1
0
        // 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
        }