我一直在使用NHibernate 2.0.1.4000
所有当前的 .NET 3.5 SP1 项目,并且在使用任何其他查询(使用 Query 或 Criteria API)时都没有遇到任何问题,直到一些新的业务逻辑要求在这个特定项目中针对应用程序的数据库,需要从单个表中检索具有特定空属性(日期时间类型)的记录。
知道您不能对此类查询使用不等于限制,而是可以使用 IsNull 限制,这个简单的查询会生成“值不能为空!” 执行时异常。我有大量的 DEBUG 模式 log4net 日志文件,我已经查看过但还没有帮助,并且我已经验证我的表类确实指定了我正在检查的属性是一个可为空的属性(DateTime?)以避免强制更新记录等可能导致的问题,这在此处不会发生...
这是查询,没什么复杂的,我尝试使用/不使用 MaxResults 附加限制来消除它作为问题,但是,每次在我收集结果之前都会抛出异常:
ICriteria criteria = session.GetISession().CreateCriteria(typeof (Order)).Add(NHibernate.Criterion.Restrictions.IsNull("ShippedOn")).SetMaxResults(10);
IList<Order> entityList = criteria.List<Order>();
有什么想法或指向更多信息可以帮助我解决这个问题吗?我已经尝试过使用 HQL,同样的问题......我在这里遗漏了一些关于返回具有特定空属性的记录的内容吗?