Nhibernate NullReferenceException, возвращающий список объектов домена - PullRequest
1 голос
/ 11 сентября 2009

Ниже приведен код, который я использую. Кажется довольно просто для меня. Но я получаю исключение NullReferenceException в последней строке, оператор return. Вот трассировка стека:

FailedSystem.NullReferenceException: Ссылка на объект не установлена ​​на экземпляр объекта. в NHibernate.Criterion.Junction.ToSqlString (ICriteria критерии, ICriteriaQuery критерий запроса, IDictionary 2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary 2 enabledFilters) в NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor (IOuterJoinLoadable persister, CriteriaQueryTranslator переводчик, ISessionFactoryImplementor фабрика, критерии критерии, строка rootEntityName, IDictionary 2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary 2 enabledFilters) в NHibernate.Impl.SessionImpl.List (CriteriaImpl критерии, результаты IList) в 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>;

        }

1 Ответ

1 голос
/ 11 сентября 2009

Подсказка находится в вашей трассировке стека.

Только в вашем операторе возврата критерии оцениваются для создания оператора 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) 

Закомментируйте все ваши критерии и снова вводите их в небольшие группы, пока не найдете тот, который вызывает проблему.

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

...