Nhibernate NullReferenceException возвращает список объектов домена

StackOverflow https://stackoverflow.com/questions/1409421

Вопрос

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

FailedSystem.NullReferenceException:Ссылка на объект не установлена экземпляр объекта.в NHibernate.Criterion.Junction.ToSqlString(ICriteria) критерии, ICriteriaQuery criteriaЗапрос, IDСловарь2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary2 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, IDictionary2 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) 

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top