Nhibernate NullReferenceException regresando Lista de objetos de dominio
-
05-07-2019 - |
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, IDictionary2 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>;
}
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.