我正在阅读Microsft关于ASP.NETMVC5和EF6的教程,链接是text. 现在我对下面的代码感到困惑.
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;
viewModel.Enrollments = viewModel.Courses.Where(
x => x.CourseID == courseID).Single().Enrollments;
}
return View(viewModel);
}
public class InstructorIndexData
{
public IEnumerable<Instructor> Instructors { get; set; }
public IEnumerable<Course> Courses { get; set; }
public IEnumerable<Enrollment> Enrollments { get; set; }
}
我认为这些代码行将加载**所有**讲师以及每个课程相关的OfficeAssignment和**所有**讲师课程以及与每门课程相关的Department.
viewModel.Instructors = db.Instructors
.Include(i => i.OfficeAssignment)
.Include(i => i.Courses.Select(c => c.Department))
.OrderBy(i => i.LastName);
如果是,为什么之后,如果 Select 了讲师(id!=空),则再次加载视图模型课程?
viewModel.Courses = viewModel.Instructors.Where(i => i.ID == id.Value).Single().Courses;
个
有没有人能解释一下?