gpt4 book ai didi

nhibernate - 扩展 NHibernate 以支持聚合函数

转载 作者:行者123 更新时间:2023-11-29 12:01:15 26 4
gpt4 key购买 nike

是否可以扩展 NHibernate 以添加对数据库系统独有的聚合函数的支持?我有一些在 PostgreSQL 中使用 array_agg() 函数(和其他函数)的查询,我想将它们转换为 HQL/ICriteria。

谢谢!

最佳答案

是的。这是可能的。

看看: http://ayende.com/Blog/archive/2006/10/01/UsingSQLFunctionsInNHibernate.aspx

你可以这样做:

public class MyDialect : PostgreSQLDialect
{
public MyDialect()
{
RegisterFunction("dbo.myfunction", new
StandardSQLFunction(NHibernateUtil.String));
}
}

然后您可以在您的 HQL 语句中使用 myfunction。您只需在 NH 配置中注册方言。

编辑:

好消息,这也适用于条件查询。

这是 PostgreSQLDialect 中的代码(来自 Reflector)

base.RegisterFunction("iif", 
new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end"));

所以在您的 ICriteria 中,您可以:

Projections.SqlFunction("iif", NHibernateUtil.Boolean, foo, bar, baz...

所有这些都应该有效,因为您正在扩展 NH 方言。

HTH

关于nhibernate - 扩展 NHibernate 以支持聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5542517/

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