我有以下模型(为这个问题简化了):
public class Student
{
public int ID { get; set; }
public virtual ICollection<StudentCourse> StudentCourses { get; set; }
public Student(){
StudentCourses = new List<StudentCourse>();
}
}
public class StudentCourse
{
public int ID { get; set; }
public string Grade { get; set; }
public int StudentID { get; set; }
public int CourseID { get; set; }
public virtual Student Student { get; set; }
public virtual Course Course { get; set; }
}
public class Course
{
public int ID { get; set; }
public virtual ICollection<StudentCourse> StudentCourses { get; set; }
public Course() {
StudentCourses = new List<StudentCourse>();
}
}
一切都在我的 DbContext 类中链接并按预期工作。我想找到所有参加过课程的学生,所以我这样做:
var query = db.Students
.Where(s => s.StudentCourses.Course.ID == 11);
但它失败了,因为由于某种原因,EF 看不到 StudentCourse 和 Course 之间的链接。错误信息是:
'System.Collections.Generic.ICollection' 不包含'Course' 的定义,并且找不到接受'System.Collections.Generic.ICollection' 类型的第一个参数的扩展方法'Course'(您是否缺少 using 指令还是程序集参考?)。
但是,以下工作正常:
var query = db.StudentCourses
.Where(s => s.Course.ID == 11)
.Select(s=>s.Students);
这是一个错误还是我做错了什么?