将空值传递给nhibernate c#中的guid列

时间:2013-03-06 14:44:24

标签: hibernate nhibernate nhibernate-criteria

我遇到了问题而没有得到正确的方法或解决方案,我该如何处理这个问题。问题是我正在创建一个条件查询,我们将属性id作为参数传递。属性id的类型是guid。当属性id有值时,它工作正常但是当它为null然后它崩溃。

我要求当属性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版。

1 个答案:

答案 0 :(得分:0)

它应该像

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

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