如何将 Nullable<T> 参数与 nHibernate Linq 表达式一起使用?

How do you use an Nullable<T> parameter with an nHibernate Linq Expression?

我一直运行遇到以下错误

PartialEvalException (InvalidOperationException ("Nullable object must have a value."), Convert(PartialEvalException (InvalidOperationException ("Nullable object must have a value."), PartialEvalException (InvalidOperationException ("Nullable object must have a value."), Convert(PartialEvalException (InvalidOperationException ("Nullable object must have a value."), Convert(null)))).GetInvolvementType())))

当我尝试 运行 带有以下 where 子句的 nHibernate Linq 查询时:

 where (Id.HasValue == false || (Id.HasValue && tbl.Id == Id.Value))
                    && (myDate.HasValue == false || (myDate.HasValue && tbl.Date <= myDate.Value))

NHibernate 可能无法将 HasValue 正确翻译成 SQL 语句,我会尝试与 null:

进行比较
(Id == null || tbl.Id == Id) && (myDate == null || tbl.Date <= myDate))

请注意,每个 && 子句第二部分中对 HasValue 的检查是多余的——我已将其删除。您也可以通过这种方式直接比较不可为 null 的类型和可为 null 的类型。