gpt4 book ai didi

nhibernate - 我可以在 NHibernate 中使用表值函数作为查询源吗?

转载 作者:行者123 更新时间:2023-12-01 06:46:47 26 4
gpt4 key购买 nike

我有一个问题要问你,亲爱的社区,你可能已经猜到了。所以。
我希望 NHibernate 根据对表值 sql 函数的评估来过滤查询的结果。
NHibernate 生成的可能的 SQL 查询可能类似于以下内容:

SELECT
[whatever]
FROM
[whatever]
INNER JOIN dbo.FnMyTableValuedFunction() as MyAlias ON
[whatever].FirstDesiredKey = MyAlias.FirstDesiredKey
AND
[whatever].SecondDesiredKey = MyAlias.SecondDesiredKey

或者可以这样写:
SELECT
[whatever]
FROM
[whatever]
WHERE
EXISTS(
SELECT
1
FROM
dbo.FnMyTableValuedFunction() AS MyAlias
WHERE
[whatever].FirstDesiredKey = MyAlias.FirstDesiredKey
AND
[whatever].SecondDesiredKey = MyAlias.SecondDesiredKey
)

我想使用 Criteria API 生成这样的查询。
据我所知,没有办法告诉 NHibernate 它应该加入什么以及如何加入。因此,可能存在的一种解决方案是第二种解决方案。
不幸的是,我没有幸运地发现如何使用表值函数作为相关子查询的查询源。你能帮我解决这个问题吗?

最佳答案

除了 SQL(HQL、Criteria、Linq、QueryOver)之外的所有 NHibernate 查询方法都适用于实体,而不是表或任何其他数据库工件。

因此,如果您使用 Criteria,则需要映射 FnMyTableValuedFunction到实体,或使用 SQLCriterion对于任意 SQL 块。

对于后者,是的,EXISTS可能是要走的路。您可以将整个条件(包括 EXISTS)包含在 SQLCriterion 中。

关于nhibernate - 我可以在 NHibernate 中使用表值函数作为查询源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4249885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com