2013-03-06 2 views
1

Я застреваю в проблеме и не получаю правильный путь или решение, как я могу справиться с этим. Проблема в том, что я создаю запрос критериев, в котором мы передаем идентификатор свойства в качестве параметра. Тип идентификатора свойства является ориентировочным. Когда идентификатор свойства имеет значения, он работает нормально, но когда он равен нулю, он сбой.Передача нулевых значений в директивный столбец в nhibernate C#

У меня есть требование о том, что когда идентификатор свойства имеет значение, тогда записи фильтров поступают в соответствии с идентификатором свойства, а когда идентификатор свойства равен нулю, тогда он записывает записи, чей идентификатор свойства равен нулю.

Я попытался это связывает 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

вместо '(объект) DBNull.Value' попробовать' (Guid?) DBNull.Value ' – mattytommo

+0

Он показывает ошибку компиляции. – Awadhendra

+1

Как насчет просто '(Guid?) Null'? – mattytommo

ответ

0

это должно быть так же просто, как

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

предположение fPropertyID имеет типа Guid? и отображается в виде простого свойства