Я использовал NHibernate 2.0.1.4000
во всех текущих проектах .NET 3.5 с пакетом обновления 1 (SP1) и у меня не было проблем с любыми другими запросами (с использованием API запросов или критериев), пока какая-то новая бизнес-логика не диктовала необходимость нового запроса в этом конкретном проекте для базы данных приложения, которая должна извлекать записи с определенным нулевым свойством (типа DateTime) из одной таблицы.
Зная, что вы не можете использовать неравноправное ограничение для этого типа запроса, но вместо этого можете использовать ограничение IsNull, этот простой запрос генерирует «Значение не может быть нулевым!» Исключение при исполнении. У меня есть обширные файлы журналов log4net в режиме DEBUG, которые я просмотрел и пока не помог, и я убедился, что мой класс для таблицы действительно определяет свойство, для которого я проверяю, является свойством обнуляемого типа (DateTime?), Чтобы избежать проблемы, которые могут быть вызваны принудительным обновлением записи и т. д., чего здесь не происходит ...
Вот запрос, ничего сложного, и я пробовал с / без дополнительного ограничения MaxResults, чтобы устранить его как проблему, и все же, каждый раз, исключение выдается до того, как я смогу собрать результаты:
ICriteria criteria = session.GetISession().CreateCriteria(typeof (Order)).Add(NHibernate.Criterion.Restrictions.IsNull("ShippedOn")).SetMaxResults(10);
IList<Order> entityList = criteria.List<Order>();
Какие-нибудь идеи или указатели на дополнительную информацию, которые могут помочь мне решить эту проблему? Я попытался использовать HQL в качестве альтернативы, те же проблемы ... Я что-то упустил здесь в отношении возврата записей с определенным нулевым свойством?