Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扩展NHibernate以支持聚合函数_Nhibernate_Postgresql - Fatal编程技术网

扩展NHibernate以支持聚合函数

扩展NHibernate以支持聚合函数,nhibernate,postgresql,Nhibernate,Postgresql,是否可以扩展NHibernate以添加对数据库系统特有的聚合函数的支持?我有一些查询使用PostgreSQL中的array_agg()函数(以及其他函数),我想将其转换为HQL/ICriteria 谢谢 是的。这是可能的 看一看: 你可以这样做: public class MyDialect : PostgreSQLDialect { public MyDialect() { RegisterFunction("dbo.myfunctio

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

谢谢

是的。这是可能的

看一看:

你可以这样做:

public class MyDialect : PostgreSQLDialect
{
       public MyDialect()
       {
              RegisterFunction("dbo.myfunction", new
              StandardSQLFunction(NHibernateUtil.String));
       }
}
然后可以在HQL语句中使用
myfunction
。您只需要在NH配置中注册方言

编辑:

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

这是PostgreSql方言中的代码(来自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

这是否意味着我仅限于HQL?我想我可以把它和iCiteria结合起来。不,不,它也应该和标准一起工作。我会更新我的答案。