Nhibernate NullReferenceException возвращает список объектов домена
-
05-07-2019 - |
Вопрос
Ниже приведен код, который я использую.Мне кажется довольно просто.Но я получаю исключение NullReferenceException в последней строке оператора возврата.Вот трассировка стека:
FailedSystem.NullReferenceException:Ссылка на объект не установлена экземпляр объекта.в NHibernate.Criterion.Junction.ToSqlString(ICriteria) критерии, ICriteriaQuery criteriaЗапрос, IDСловарь
2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary
2 enabledFilters) на NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable persister, CriteriaQueryTranslator переводчик, ISessionFactoryImplementor factory, CriteriaImpl критерии, String rootEntityName, IDictionary2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary
2 enabledFilters) на NHibernate.Impl.SessionImpl.List(CriteriaImpl) критерии, IList results) на NHibernate.Impl.CriteriaImpl.List(IList) результатов) на NHibernate.Impl.CriteriaImpl.List()
public List<Person> Search(string keyword)
{
ICriteria criteria = session.CreateCriteria(typeof (Person));
Disjunction disjunction = Restrictions.Disjunction();
{
// In here, there is a whole lot of business logic adding around 20 conditions to the disjunction
}
criteria.Add(disjunction);
return criteria.List<Person>() as List<Person>;
}
Решение
Подсказка находится в трассировке вашего стека.
Только в вашем операторе возврата критерии оцениваются для создания оператора SQL.
FailedSystem.NullReferenceException:
Object reference not set to an instance of an object.
at NHibernate.Criterion.Junction.ToSqlString(
ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary2 enabledFilters)
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(
IDictionary2 enabledFilters)
Закомментируйте все свои критерии и повторно представляйте их в небольших группах, пока не найдете тот, который вызывает проблему.
Скорее всего, вы ссылаетесь на свойство, которое не существует или не сопоставлено, или предоставляете нулевое значение критерию, который его не поддерживает.