具有专用支持字段的nhibernate集合查询

具有专用支持字段的nhibernate集合查询,nhibernate,fluent-nhibernate,backing-field,Nhibernate,Fluent Nhibernate,Backing Field,我在数据库中建立了学生和教授之间的多对多关系模型(使用桥接表)(_students_selected),在我的一生中,我将其建模为一对多关系,即教授有一个学生 HasManyToMany<Student>(Reveal.Member<Professor>("_students")) .Table("_students_selected").ChildKeyColumn("student_key").ParentKeyColumn("professor_key");

我在数据库中建立了学生和教授之间的多对多关系模型(使用桥接表)(_students_selected),在我的一生中,我将其建模为一对多关系,即教授有一个学生

 HasManyToMany<Student>(Reveal.Member<Professor>("_students"))
   .Table("_students_selected").ChildKeyColumn("student_key").ParentKeyColumn("professor_key");

public class Professor    
{
        private IList<Students> _students;
        public virtual Student Student
        {
            get { return _students.FirstOrDefault(); }
        }
}
HasManyToMany(显示成员(“\u学生”))
.Table(“\u students\u selected”).ChildKeyColumn(“student\u key”).ParentKeyColumn(“professor\u key”);
公共课教授
{
私立理工大学学生;
公共虚拟学生
{
获取{return\u students.FirstOrDefault();}
}
}
上述方法在获取数据时有效,但在查询教授时,我无法为学生添加where条件,因为实际数据映射到私人支持字段\u学生。我如何质疑这一点?下面的代码不起作用

_unitOfWork.Session.QueryOver<Professor>().Where(i => i.Student.Id == 24).List();
\u unitOfWork.Session.QueryOver().Where(i=>i.Student.Id==24.List();

NHibernate无法将属性中的C代码转换为SQL,它只能处理映射的属性。要么在语句中使用集合(当然,它需要是公共/内部的),要么在内存中过滤结果(但要小心选择n+1问题)