2

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

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

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

SubmittedDateTime? is nullable

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

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

4

1 回答 1

0

斯蒂芬,

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

DECLARE @a INT,
        @b INT

SELECT @a = null, @b=null

IF(@a=@b)
BEGIN
    SELECT 'Equal'
ELSE
    SELECT 'NOT Equal'
END

如果您在 ANSI NULLS ON 的环境中运行以下代码,您会看到“不等于”

也可能是您的日期设置了时间组件;

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

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

NHibernate 不支持此功能,因此您需要创建(或查找)自定义 Icriterion

于 2012-09-26T21:20:54.820 回答