Entity framework 如何使用Linq在.NET EF Core中进行查询?
您好,我有如上图所示的关系表/模型 教师可以接受多种培训。培训/课程可以是正式培训,也可以不是正式培训。 一个老师可能有很多学生 现在我想得到一份学生名单,他们的老师选修了IsFormalTraining==true的课程 如何在.NET EF Core 2.2中做到这一点 编辑: 型号:Entity framework 如何使用Linq在.NET EF Core中进行查询?,entity-framework,linq,asp.net-core,ef-core-2.0,Entity Framework,Linq,Asp.net Core,Ef Core 2.0,您好,我有如上图所示的关系表/模型 教师可以接受多种培训。培训/课程可以是正式培训,也可以不是正式培训。 一个老师可能有很多学生 现在我想得到一份学生名单,他们的老师选修了IsFormalTraining==true的课程 如何在.NET EF Core 2.2中做到这一点 编辑: 型号: Teacher { int Id; string Name; ICollection<TeacherStudent> students ; } TeacherStude
Teacher
{
int Id;
string Name;
ICollection<TeacherStudent> students ;
}
TeacherStudent{
int Id;
int TeacherId;
int StudentId;
}
Student {
int Id;
string Name;
}
TeacherTraining{
int Id;
int TeacherId;
int CourseId;
DateTime StartDate;
}
Course {
int Id;
string Name;
}
老师
{
int-Id;
字符串名;
i大学生;
}
教师学生{
int-Id;
内特教师;
国际学生;
}
学生{
int-Id;
字符串名;
}
教师培训{
int-Id;
内特教师;
int CourseId;
日期时间开始日期;
}
课程{
int-Id;
字符串名;
}
我根据您的类做了一些假设,因此您可能需要进行测试和调整,但我想它看起来会像这样:
var students =
context.Students.Where(s =>
context.Teachers.Any(t =>
t.Students.Any(st => st.StudentId == s.Id) && context.TeacherTraining.Any(tt =>
tt.TeacherId == t.Id &&
context.Course.Any(c => tt.CourseId == c.Id && c.IsFormalTraining))));
我无法在不安装大量设备的情况下调试此程序,因此您可能需要逐步完成。您还可以将其分解为更多的查询,这样很容易阅读,等等,但可能效率不高(当然,如果不运行测试,我不知道效率有多高)。您是否设置了实体类或上下文?您是先使用代码还是先使用数据库?如果我们想提供帮助,我们需要更多关于您当前实施的详细信息。我的表格太大,无法在此处显示,因此我使用此图表来解释我需要什么。是的,但您尝试了什么?如果看不到任何代码,就很难解决您的特定问题。这有关于如何构造问题的更多细节:ok。。我已经添加了代码。如果没有所有必需的导航属性,就不能这样做。请先添加它们。然后展示您如何尝试使用,这样我们就知道映射配置是正确的。否则我们会继续兜圈子。