不确定如何在Fluent NHibernate (最好)或Criteria
中执行此操作。
SELECT foo.One, foo.Two, bar.One
FROM Bar bar
RIGHT JOIN ( SELECT
One, Two
WHERE One LIKE '%number%'
ORDER BY Id ASC
OFFSET 0 ROWS
FETCH NEXT 25 ROWS ONLY
) Foo
ON Bar.Foo_Id = Foo.Id
WHERE Bar.Two IN (...)
答案 0 :(得分:0)
NHibernate criteria
代表了一种用于查询顶层实体的语言,即位于映射 之上。这意味着,我们(NHiernate条件的用户)可以在这些部分中影响最终的SQL SELECT语句:
SELECT
(要么是实体的所有映射列,要么是投影 - 只是特定列) WHERE
(可以使用任何类型的限制,包括自定义/数据库特定声明) GROUP BY
ORDER BY
HAVING
事实上,我们查询实体 (即我们如何映射<class name="MyEntity" table="MyTable"
),我们可以影响 FROM
< / strong>仅在映射内部。
关于JOIN
:我们还可以决定将加入哪些(映射参考)甚至加入类型(LEFT,INNER) ...)。但是ON
语句必须包含来自映射的NHibernate生成的部分。
所以,上述内容只是为了达到最终陈述:
如果我们想让SELECT作为FROM / JOIN的一部分...... SELECT必须映射为某个实体
<class name="MyEntity"... >
<subselect>
SELECT ...
FROM ...
</subselect>
在这里阅读更多内容: