是否可以在 Nhibernate QueryOver 的连接部分进行子选择?
Is it possible to have a subselect in the join part in Nhibernate QueryOver?
我正在尝试复制
Select
...
From Mistress Mi
Left Outer Join Dog D On Mi.ID = C.MistressID
And D.MasterID =
( Select Ma2.ID From Master Ma2 Where
D.MasterID = Ma2.ID
And Ma2.Status = 42 )
Left Outer Join Master Ma On
D.MasterID = Master.ID
And Ma.Status = 42
这意味着:
不管有没有狗,都给我三奶
给我所有有地位的大师
以及与所述主人和情妇有关的所有狗。
这可能只会产生情妇。
但是如果我们有一只狗,我们确定它的主人有地位。
我不知道的是连接中的子选择。
我对 WithSubQuery
的所有尝试都会导致将子选择添加到最终的 Where 子句中(而不是我想要的在 Join 部分内)。
NHibernate/QueryOver 有可能吗?
这应该是可以的。当我们执行 JoinAlias
(JOIN statement) 时,我们可以传递第 4 个参数,即所谓的 with 子句。本次问答中:
- NHibernate QueryOver with leftjoins
我们可以看一个例子
var list = session
.QueryOver<Job>()
.JoinAlias(x => x.tags // relation
, () => jobTag, // alias
, JoinType.LeftOuterJoin // type
, Subqueries.WhereProperty(() => jobTag.name).In(subquery) // here
)
.List();
第4个参数添加到ON
子句AND
(它可以限制更多现有的关系条件)
我正在尝试复制
Select
...
From Mistress Mi
Left Outer Join Dog D On Mi.ID = C.MistressID
And D.MasterID =
( Select Ma2.ID From Master Ma2 Where
D.MasterID = Ma2.ID
And Ma2.Status = 42 )
Left Outer Join Master Ma On
D.MasterID = Master.ID
And Ma.Status = 42
这意味着:
不管有没有狗,都给我三奶
给我所有有地位的大师
以及与所述主人和情妇有关的所有狗。
这可能只会产生情妇。
但是如果我们有一只狗,我们确定它的主人有地位。
我不知道的是连接中的子选择。
我对 WithSubQuery
的所有尝试都会导致将子选择添加到最终的 Where 子句中(而不是我想要的在 Join 部分内)。
NHibernate/QueryOver 有可能吗?
这应该是可以的。当我们执行 JoinAlias
(JOIN statement) 时,我们可以传递第 4 个参数,即所谓的 with 子句。本次问答中:
- NHibernate QueryOver with leftjoins
我们可以看一个例子
var list = session
.QueryOver<Job>()
.JoinAlias(x => x.tags // relation
, () => jobTag, // alias
, JoinType.LeftOuterJoin // type
, Subqueries.WhereProperty(() => jobTag.name).In(subquery) // here
)
.List();
第4个参数添加到ON
子句AND
(它可以限制更多现有的关系条件)