2012-02-15 39 views
0

我有一个DateTime属性映射到Oracle数据库中的表的实体。使NHibernate使用TRUNC为DateTime.Date

下面的查询使用一个不存在的date功能,而不是trunc导致的NHibernate:

session.Query<MyEntity>().Where(x => x.MyProperty.Date = myDate); 

生成的SQL是这样的:

select <columns> from MY_ENTITY where date(MY_PROPERTY) = :p0; 

如何告诉NHibernate的使用trunc代替?

我使用的是NHibernate的ODP.NET提供程序(OracleDataClientConfiguration.Oracle10)。

回答

2

This issuefixed about a month ago,但一个稳定的版本尚未发布(15 /月/ 2012年)

等到那个时候,刚刚从Oracle10gDialect继承并在构造函数注册的功能:

RegisterFunction("date", new StandardSQLFunction("trunc", NHibernateUtil.Date)); 

然后配置NH使用修改后的方言。

+0

谢谢,这就是我在此期间所做的。很高兴知道它是固定的! :-) – 2012-02-15 17:30:58