可以在 NHibernate 中完成这样的事情吗?
Can something like this be done in NHibernate?
不确定如何在 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 (...)
NHibernate criteria
,表示一种用于在 实体 之上查询的语言,即 在 映射 。这意味着,我们 (NHiernate 标准的用户) 可以影响这些部分中的最终 SQL SELECT 语句:
SELECT
(实体的所有映射列,或投影 - 仅特定列)
WHERE
(任何类型的限制都可以,包括custom/DB特定的语句)
GROUP BY
ORDER BY
HAVING
事实是,我们查询 Entities (即我们如何映射 <class name="MyEntity" table="MyTable"
),我们可以影响 FROM
仅在映射内部。
关于JOIN
:我们还可以决定加入什么(哪个映射参考)甚至加入输入 (左侧,内部...)。但是 ON
语句必须包含 NHibernate 生成的部分,来自映射。
所以,上面的陈述只是为了得到最后的陈述:
如果我们想要 SELECT 作为 FROM/JOIN 的一部分...那么 SELECT 必须映射为某个实体
<class name="MyEntity"... >
<subselect>
SELECT ...
FROM ...
</subselect>
在此处阅读更多内容:
不确定如何在 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 (...)
NHibernate criteria
,表示一种用于在 实体 之上查询的语言,即 在 映射 。这意味着,我们 (NHiernate 标准的用户) 可以影响这些部分中的最终 SQL SELECT 语句:
SELECT
(实体的所有映射列,或投影 - 仅特定列)WHERE
(任何类型的限制都可以,包括custom/DB特定的语句)GROUP BY
ORDER BY
HAVING
事实是,我们查询 Entities (即我们如何映射 <class name="MyEntity" table="MyTable"
),我们可以影响 FROM
仅在映射内部。
关于JOIN
:我们还可以决定加入什么(哪个映射参考)甚至加入输入 (左侧,内部...)。但是 ON
语句必须包含 NHibernate 生成的部分,来自映射。
所以,上面的陈述只是为了得到最后的陈述:
如果我们想要 SELECT 作为 FROM/JOIN 的一部分...那么 SELECT 必须映射为某个实体
<class name="MyEntity"... >
<subselect>
SELECT ...
FROM ...
</subselect>
在此处阅读更多内容: