nHibernate:Subqueries.WhereIn
nHibernate: Subqueries.WhereIn
所以我正在尝试创建一个查询,它限制了子查询的结果数量。
Select * From Products Where products.supplierid IN (Select supplierid FROM supplier WHERE active = 1)
由于我使用了多个子查询where条件,所以我首先尝试做这样的事情:
mainQuery.And(
Restrictions.Disjunction()
.Add(Subqueries.WhereExists(subqueryFilterA))
.Add(Subqueries.WhereExists(subqueryFilterB))
);
这很好用,除了我不想要 WhereExists
,而是 WhereIn
。但是WhereIn
好像不存在
我找到的唯一解决方法是:
mainQuery.Where(
Restrictions.Disjunction()
.Add(Subqueries.PropertyIn("products.supplierId", subqueryFilterA))
);
这似乎工作正常。但是由于 subqueryFilterA 现在是 DetachedCriteria
我不能再使用 linq。
没有Subqueries.WhereIn
是什么原因?
使用Subqueries.WhereProperty
:
Subqueries
.WhereProperty(() => products.supplierId)
.In(QueryOver.Of<T>.Where(...).Select(...))
所以我正在尝试创建一个查询,它限制了子查询的结果数量。
Select * From Products Where products.supplierid IN (Select supplierid FROM supplier WHERE active = 1)
由于我使用了多个子查询where条件,所以我首先尝试做这样的事情:
mainQuery.And(
Restrictions.Disjunction()
.Add(Subqueries.WhereExists(subqueryFilterA))
.Add(Subqueries.WhereExists(subqueryFilterB))
);
这很好用,除了我不想要 WhereExists
,而是 WhereIn
。但是WhereIn
好像不存在
我找到的唯一解决方法是:
mainQuery.Where(
Restrictions.Disjunction()
.Add(Subqueries.PropertyIn("products.supplierId", subqueryFilterA))
);
这似乎工作正常。但是由于 subqueryFilterA 现在是 DetachedCriteria
我不能再使用 linq。
没有Subqueries.WhereIn
是什么原因?
使用Subqueries.WhereProperty
:
Subqueries
.WhereProperty(() => products.supplierId)
.In(QueryOver.Of<T>.Where(...).Select(...))