如何将 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 的类型。
我一直运行遇到以下错误
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 的类型。