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(...))