我遇到了问题而没有得到正确的方法或解决方案,我该如何处理这个问题。问题是我正在创建一个条件查询,我们将属性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版。
答案 0 :(得分:0)
它应该像
一样简单var invoiceList = Session.CreateCriteria<tARInvoice>()
.Add(Restrictions.Eq("fPropertyID", propertyId)
.List<tARInvoice>();
假设fPropertyID的类型为Guid?
并映射为简单属性