![](/img/trans.png)
[英]How can I find the Id property or properties related to a navigational property?
[英]How can I load a property of a navigational property?
我正在尝试使用急切加载的导航属性来创建查询。 有没有办法加载导航属性的属性? 当我尝试以下代码时,出现“序列不包含任何元素”异常。
var viewModel = new InstructorIndexData();
viewModel.Instructors = db.Instructors.Include(i => i.OfficeAssignment)
.Include(i=>i.Assignments)
.Include(i => i.Students)
.Include (i=>i.Enrollments )
.Include(i => i.Courses.Select(c => c.Department))
.OrderBy(i => i.LastName);
viewModel.Courses = viewModel.Instructors.Where(i => i.InstructorID == id).Single().Courses;
viewModel.Enrollments = viewModel.Courses.Where(x => x.CourseID == courseID).Where( e=>e.Enrollments.First().InstructorFullName == "Kim Abercrombie").Single().Enrollments;
但是,当我使用:
viewModel.Enrollments = viewModel.Courses.Where(x => x.CourseID == courseID).Single().Enrollments;
它会很好地填充我的viewModel.Enrollment属性。 有没有办法在linq查询中访问这种类型的复杂属性?
有没有办法加载导航属性的属性?
您似乎已经知道如何渴望加载多个级别:
viewModel.Instructors = db.Instructors.Include(i => i.OfficeAssignment)
.Include(i=>i.Assignments)
.Include(i => i.Students)
.Include (i=>i.Enrollments )
.Include(i => i.Courses.Select(c => c.Department))
.OrderBy(i => i.LastName);
这是您可能会得到异常的地方(或者可能是对.Single()
其他使用):
viewModel.Enrollments = viewModel.Courses
.Where(x => x.CourseID == courseID)
.Where( e=>e.Enrollments.First().InstructorFullName == "Kim Abercrombie")
.Single().Enrollments;
来自.Single()
的文档
返回序列中的唯一元素,如果序列中不存在一个元素,则引发异常。
这是我解决的方法。 var selectTemp = viewModel.Courses.Where(x => x.CourseID == courseID).Single()。Enrollments;
var selectedTeacher = from t in selectTemp where t.InstructorFullName == teacher select t;
viewModel.Enrollments = selectedTeacher;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.