在休眠中,我使用以下来比较日期
Restrictions.Eq(Projections.Property("SubmittedDate"), request.Data.SubmittedDateTime.Value)
在当地环境中它的工作。但在其他环境中它不返回结果。
SubmittedDateTime? is nullable
我是否需要在映射文件中的某处提及可为空。
为此我需要对代码进行任何更改吗?
在休眠中,我使用以下来比较日期
Restrictions.Eq(Projections.Property("SubmittedDate"), request.Data.SubmittedDateTime.Value)
在当地环境中它的工作。但在其他环境中它不返回结果。
SubmittedDateTime? is nullable
我是否需要在映射文件中的某处提及可为空。
为此我需要对代码进行任何更改吗?
斯蒂芬,
您的问题可能是(或曾经是)您的生产服务器启用了 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