1

我陷入了问题,没有得到正确的方法或解决方案,我该如何处理这个问题。问题是我正在创建一个标准查询,我们在其中将属性 id 作为参数传递。属性 id 的类型是 guid。当属性 id 有值时,它工作正常,但当它为空时,它会崩溃。

我的要求是,当属性 id 有值时,根据属性 id 过滤记录,当属性 id 为 null 时,它过滤属性 id 为 null 的记录。

我试过这个链接Nullable GUID

但它会给出另一个异常,即类型不匹配异常。

这是我正在使用的 NHibernate 代码

 var invoiceList =
     Session.CreateCriteria<tARInvoice>("inv")
            .Add(Restrictions.Eq("inv.fPropertyID",
                                 propertyId == null ?  (object)DBNull.Value : propertyId.Value))   
            .List<tARInvoice>()

我正在使用 c# 和 NHibernate 3.1 版。

4

1 回答 1

0

它应该很简单

var invoiceList = Session.CreateCriteria<tARInvoice>()
    .Add(Restrictions.Eq("fPropertyID", propertyId)
    .List<tARInvoice>();

假设 fPropertyID 是类型Guid?并映射为简单属性

于 2013-03-13T13:49:14.917 回答