nhibernate, sql server Datetime compare failing



在 nhibernate 中,我使用以下来比较日期

Restrictions.Eq(Projections.Property("SubmittedDate"), request.Data.SubmittedDateTime.Value)

在局部环境中它的工作。 但在其他环境中它不返回结果。

SubmittedDateTime? is nullable

我是否需要在映射文件中的某处提及可为空。

为此我需要在代码中进行任何更改吗?

Stephen,

您的问题可能是(或已经)您的生产服务器启用了 ANSI 空值 [1]:http://msdn.microsoft.com/en-us/library/ms188048.aspx。 在这种情况下,一个 NULL 值与另一个 NULL 值不同。例如

DECLARE @a INT,
        @b INT
SELECT @a = null, @b=null
IF(@a=@b)
BEGIN
    SELECT 'Equal'
ELSE
    SELECT 'NOT Equal'
END

如果在打开 ANSI NULL 的环境中运行以下代码,您将看到"不等于"

也可能是您的日期设置了时间分量;

2012-09-26 22:16:00.000 <> 2012-09-26

为此,您需要使用 DATEDIFF(D, Date1, Date2)=0。

NHibernate不支持开箱即用,因此您需要创建(或查找)自定义ICriterion

最新更新