如何在NHibernate映射中使用公式属性

如何在NHibernate映射中使用公式属性,nhibernate,formula,Nhibernate,Formula,关于如何使用SQL where子句中要使用的公式属性,我有一个问题。具体地说,我希望使用(datepart(hh,getdate())作为公式,并得到我期望的SQL 从表名称中选择列表 其中(datepart(hh,getdate())

关于如何使用SQL where子句中要使用的公式属性,我有一个问题。具体地说,我希望使用(datepart(hh,getdate())作为公式,并得到我期望的SQL

从表名称中选择列表 其中(datepart(hh,getdate())<17

但我保留了where条款如下:


其中(this_0_u.hh,getdate())插入别名,因为解析器不知道
hh
是一个文本(如果MS使用了字符串,您就不会有这个问题,因为您可以毫无问题地使用
'hh'


最简单的解决方法是创建一个函数(称之为
gethour
),该函数返回
datepart(hh,getdate())

,它确实可以工作。遗憾的是,我们不得不为这个非常常用的MS SQL关键字求助于一种解决方法。它现在适合我了。希望NHibernate能在未来的版本中解决这个问题。
@John:请记住,NHibernate适用于多个数据库。修改解析器以解决MSSQL问题是不可能的。@Diego,因为在配置文件中声明它适用于特定的sql方言,并且NHibernate总是知道如何处理几个MS sql关键字,所以您可能认为NHibernate处理所有关键字是合乎逻辑的。但我们有时也必须知道并生活在有限的范围内。@John:hh不是一个关键词。它只是在
datepart
函数的上下文中的伪文本。@Diego,这是真的。谢谢