Pregunta

A continuación se muestra el código que estoy usando. Me parece bastante simple. Pero obtengo una NullReferenceException en la última línea, la declaración de retorno. Aquí está la traza de la pila:

  

FailedSystem.NullReferenceException:   Referencia de objeto no establecida en un   instancia de un objeto. a   NHibernate.Criterion.Junction.ToSqlString (ICriteria   criterios, ICriteriaQuery   CriteriosQuery, IDictionary 2   enabledFilters) en   NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition (IDictionary 2   enabledFilters) en   NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor (IOuterJoinLoadable   Persistir, CriteriaQueryTranslator   traductor, ISessionFactoryImplementor   Fábrica, Criterios Criterios Impl, Cadena   rootEntityName, IDictionary 2   enabledFilters) en   NHibernate.Loader.Criteria.CriteriaLoader..ctor (IOuterJoinLoadable   Persistir, ISessionFactoryImplementor   Fabrica, CriteriaImpl RaízCriteria,   String rootEntityName, IDictionary 2   enabledFilters) en   NHibernate.Impl.SessionImpl.List (CriteriaImpl   criterios, resultados de IList) en   NHibernate.Impl.CriteriaImpl.List (IList   resultados) en   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>;

        }
¿Fue útil?

Solución

La pista está en el seguimiento de tu pila.

Es solo en su declaración de devolución que los criterios se evalúan para producir una declaración 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) 

Comente todos sus criterios y vuelva a introducirlos en grupos pequeños hasta que encuentre el que está causando el problema.

Lo más probable es que esté haciendo referencia a una propiedad que no existe, que no esté asignada, o que proporcione un valor nulo a un criterio que no la admita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top