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数量。。但我错了。