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

时间:2015-01-21 00:10:58

标签: c# linq nhibernate linq-to-nhibernate

我一直遇到以下错误

  

PartialEvalException(InvalidOperationException(&#34; Nullable对象必须有值。&#34;),Convert(PartialEvalException(InvalidOperationException(&#34; Nullable对象必须有值。&#34;),PartialEvalException(InvalidOperationException) (&#34; Nullable对象必须有一个值。&#34;),Convert(PartialEvalException(InvalidOperationException(&#34; Nullable对象必须有一个值。&#34;),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))

1 个答案:

答案 0 :(得分:2)

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

(Id == null || tbl.Id == Id) && (myDate == null || tbl.Date <= myDate))

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