是否使用NHibernate条件查询至少有一个子对象的父对象?
在我的项目中,线可以分组,组的类型可以是交叉1或平行2。我需要找到至少有一组指定类型的所有行(在本例中为1)。给定行的Id可以位于组的LineA列或LineB列上。到目前为止,我的收获如下:是否使用NHibernate条件查询至少有一个子对象的父对象?,nhibernate,criteria,subquery,correlated-subquery,Nhibernate,Criteria,Subquery,Correlated Subquery,在我的项目中,线可以分组,组的类型可以是交叉1或平行2。我需要找到至少有一组指定类型的所有行(在本例中为1)。给定行的Id可以位于组的LineA列或LineB列上。到目前为止,我的收获如下: Criteria crit = session.CreateCriteria(typeof(Line), "ln"); DetachedCriteria count = DetachedCriteria.For<Group>() .SetProjection(Projections.Count
Criteria crit = session.CreateCriteria(typeof(Line), "ln");
DetachedCriteria count = DetachedCriteria.For<Group>()
.SetProjection(Projections.CountDistinct("Id"))
.Add(Expression.Or(
Expression.EqProperty("LineA", "ln.Id"),
Expression.EqProperty("LineB", "ln.Id")))
.Add(Expression.Eq("GroupTypeId", 1));
crit.Add(Subqueries.Gt(0, count));
我让它工作了
crit.Add(Expression.Sql(
"EXISTS(select 1 from Group" +
"WHERE ({alias}.Id=LineA OR {alias}.Id=LineB)"+
"AND GroupTypeId = ?)", (int) type, NHibernateUtil.Int32));
{alias}是所查询对象的占位符。您的查询看起来正常。您是否正在寻找更好的方法来执行此操作,或者您的查询无法正常工作?它无法正常工作。抛出异常,但我记不起消息。我让它工作,并将发布答案你应该花时间检查你收到的异常情况,并将其与你的问题一起发布。但不是真正使用标准。