假设您具有以下实体所有权
School ||---|< Course >|--|< Student
有史以来最差的绘画,但是学校可以有几个课程,而课程可以有多个学生 。
在EF中,我通常会这样做,以获取所有数据:
return _db.School
.Include(t => t.Classes)
.ThenInclude(c => c.Course)
.ThenInclude(s => s.Student)
但是可以说,我只想要名字为 Billy 的学生。 然后我想我可以这样
return _db.School
.Include(t => t.Classes)
.ThenInclude(o => o.Course)
.ThenInclude(o => o.Student.Where(s => s.Studen.name.Equals( "Billy"))
据我所知不可能,所以我这样做是这样的:
return _db.School
.Select(school => new School()
{
Id = school.Id
Name = school.Name
Courses = school.Courses.Select(courses => new Course()
{
Id = course.Id,
Name = course.Name
Students = course.Students.Select(student => new Student()
{
Id = student.Id,
Name = student.Name
}).Where(s => s.Name.Equals("Billy"));
})
});
etc....
必须有更好的方法吗?有什么建议吗?
该代码只是被模拟的,因此可能是一堆语法错误和错别字。但是你明白了。