我在数据库中对学生和教授(_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(); }
}
}上面的方法在获取数据时有效,但是在查询教授时,我无法为学生添加where条件,因为实际数据被映射到私有支持字段_students。如何查询?下面的代码不起作用。
_unitOfWork.Session.QueryOver<Professor>().Where(i => i.Student.Id == 24).List();发布于 2011-09-16 15:09:48
NHibernate不能将属性中的C#代码转换为SQL,它只能处理映射的属性。要么在语句中使用集合(当然,它需要是公共/内部的),要么在内存中过滤结果(但要注意select n+1问题)。
https://stackoverflow.com/questions/7431222
复制相似问题