C# nHibernate:子查询。其中

C# nHibernate:子查询。其中,c#,nhibernate,C#,Nhibernate,所以我尝试创建一个查询,它限制了子查询的结果数量 Select * From Products Where products.supplierid IN (Select supplierid FROM supplier WHERE active = 1) 由于我使用了多个子查询where条件,因此我首先尝试执行以下操作: mainQuery.And( Restrictions.Disjunction() .Add(Subqueries.WhereExists(subqueryFil

所以我尝试创建一个查询,它限制了子查询的结果数量

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
而是
where
。但是,
其中
似乎不存在

我发现的唯一解决办法是:

mainQuery.Where(
   Restrictions.Disjunction()
   .Add(Subqueries.PropertyIn("products.supplierId", subqueryFilterA))
);
这似乎行得通。但是由于子查询过滤器现在是一个
DetachedCriteria
,我不能再使用linq了


没有
子查询是否有原因。其中

使用
子查询。WhereProperty

Subqueries
  .WhereProperty(() => products.supplierId)
  .In(QueryOver.Of<T>.Where(...).Select(...))
子查询
.WhereProperty(()=>products.supplierId)
.In(QueryOver.Of.Where(…)。选择(…)

使用
子查询。WhereProperty

Subqueries
  .WhereProperty(() => products.supplierId)
  .In(QueryOver.Of<T>.Where(...).Select(...))
子查询
.WhereProperty(()=>products.supplierId)
.In(QueryOver.Of.Where(…)。选择(…)

我不能再使用linq了。
为什么?
QueryOver
子查询中有
DetachedCriteria
属性
QueryOver.Of().Where(…).Select(…).DetachedCritera
Hi谢谢您的评论。是的,这会起作用,但我仍然必须使用
子查询.PropertyIn(“products.supplierId”,QueryOver.Of().Where(…).Select(…).DetachedCritera)
。我不能丢失
“products.supplierId”
并将其更改为以下内容:
属性in(()=>productsDto.Supplyer,QueryOver.Of()。Where(…).Select(…).DetachedCritera)
,还是我错了。
我不能再使用linq。
为什么?
QueryOver
子查询中有
DetachedCriteria
属性
QueryOver.Of().Where(…).Select(…).DetachedCritera
Hi谢谢您的评论。是的,这会起作用,但我仍然必须使用
子查询.PropertyIn(“products.supplierId”,QueryOver.Of().Where(…).Select(…).DetachedCritera)
。我不能丢失
“products.supplierId”
并将其更改为以下内容:
属性in(()=>productsDto.Supplyer,QueryOver.Of()。Where(…).Select(…).DetachedCritera)
,还是我错了。谢谢,我以为这会像(@p1,@p2,@p3,…)中的
这将限制一个人可以拥有的ID数量。。但是我错了。谢谢,我以为这会像(@p1,@p2,@p3,…)中的
那样,限制一个人可以拥有的ID数量。。但我错了。