【问题标题】:Make NHibernate use TRUNC for DateTime.Date让 NHibernate 对 DateTime.Date 使用 TRUNC
【发布时间】:2012-02-16 01:24:21
【问题描述】:

我有一个带有 DateTime 属性的实体,该属性映射到 Oracle 数据库中的表。

以下查询导致 NHibernate 使用不存在的 date 函数而不是 trunc:

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)。

【问题讨论】:

    标签: c# .net nhibernate linq-to-nhibernate


    【解决方案1】:

    This issue 是 fixed about a month ago,但尚未发布稳定版本(截至 2012 年 2 月 15 日)

    在此之前,只需从Oracle10gDialect 继承并在构造函数中注册函数即可:

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

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

    【讨论】:

    • 谢谢,这就是我在此期间所做的。很高兴知道它是固定的! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2018-02-13
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多