【发布时间】:2011-09-16 09:47:21
【问题描述】:
我在学生和教授 (_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 无法识别 Any 来过滤列表。什么等价于any?
_unitOfWork.Session.QueryOver<Professor>()
.Where(x => x.Students.Any(i => i.Id.IsIn(childStudentList))).List();
【问题讨论】:
-
你试过
.WithSubquery.Where(x => x.Students.Any(i => i.Id.IsIn(childStudentList)));吗? -
您好,感谢您的回复,我刚刚尝试了以下方法:_unitOfWork.Session.QueryOver
().WithSubquery.Where( x => x.Students.Any(i => i .Id.IsIn(childStudentList))).List();我得到以下错误'无法将'System.Linq.Expressions.MethodCallExpressionN'类型的对象转换为'System.Linq.Expressions.BinaryExpression'。'
标签: linq nhibernate fluent any