在 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