我在学生和教授(_students_selected)之间的数据库(带有桥接表)中建模了一个多对多关系,在我的实体中,我将其建模为多对多关系,即教授有许多学生。
HasManyToMany(x => x.Students)
.Table("_students_selected").ChildKeyColumn("student_key").ParentKeyColumn("professor_key");
public class Professor
{
private IList<Students> _students;
public virtual Student Students
{
get { return _students; }
set { _students = value; }
}
}
我无法查询教授的学生,我已经尝试了以下方法,但是nhibernate不识别任何来过滤列表。等于什么?
_unitOfWork.Session.QueryOver<Professor>()
.Where(x => x.Students.Any(i => i.Id.IsIn(childStudentList))).List();
这帮助我解决了一个类似的问题:在多对多的joinalias
下,nhibernate的查询不能快速加载。我可以将其缩减为:
Role role = null;
session.QueryOver<User>()
.JoinAlias(u => u.Roles, () => role)
.Where(() => role.Id == someId);