Frage

Im Anschluss ist der Code ich verwende. Scheint mir ziemlich einfach. Aber ich erhalte eine Nullreferenceexception in der letzten Zeile, die return-Anweisung. Hier ist der Stack-Trace:

  

FailedSystem.NullReferenceException:   Objektverweis nicht auf eine Set   Instanz eines Objekts. beim   NHibernate.Criterion.Junction.ToSqlString (ICriteria   Kriterien, ICriteriaQuery   criteriaQuery, IDictionary2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary2   enabledFilters) bei   NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor (IOuterJoinLoadable   persister, CriteriaQueryTranslator   Übersetzer, ISessionFactoryImplementor   Fabrik, CriteriaImpl Kriterien, String   rootEntityName, IDictionary2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary2   enabledFilters) bei   NHibernate.Impl.SessionImpl.List (CriteriaImpl   Kriterien, die Ergebnisse IList) bei   NHibernate.Impl.CriteriaImpl.List (IList   Ergebnisse) bei   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>;

        }
War es hilfreich?

Lösung

Der Schlüssel ist in Ihrem Stack-Trace.

Es ist nur zu Ihrer Rückkehr Aussage, dass die Kriterien ausgewertet werden eine SQL-Anweisung zu erzeugen.

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) 

Kommentieren Sie alle Ihre Kriterien und sie in kleinen Gruppen wieder einführen, bis Sie finden, die das Problem verursacht.

Die meisten wahrscheinlich, dass Sie eine Eigenschaft sind Referenzierung, die vorhanden ist does't oder nicht abgebildet, oder eine Null zu einem Kriterium der Voraussetzung, dass es nicht unterstützt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top