문제

다음은 내가 사용하는 코드입니다. 나에게 아주 간단 해 보인다. 그러나 마지막 줄에서 NullReferenceException을 얻습니다. 스택 추적은 다음과 같습니다.

실패한 시티스트 .nullReferenceException : 객체 참조는 객체의 인스턴스로 설정되지 않습니다. at nhibernate.criterion.junction.tosqlstring (icriteria criteria, icriteriaquery crisitiaQuery, identication2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary2 enabledfilters)에서 nhibernate.loader.criteria.criteriajoinwalker..ctor (iouterjoinloadable persister, croritiaQueryTranslator Translator, issessionFactoryImplementor factory, criteriaimpl criteria, String rootentityName, Identication2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary2 nhibernate.impl.sessionimpl.list에서 enabledfilters)에서 nhibernate.impl.criteriaimpl.list (ilist results)에서 nhibernate.impl.criteriaimpl.list ()의 nhibernate.impl.criteriaimpl.list (ilist results)의 inabledfilters.

 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