Nhibernate NullReferenceException return Elenco di oggetti dominio
-
05-07-2019 - |
Domanda
Di seguito è riportato il codice che sto usando. Mi sembra abbastanza semplice. Ma ottengo una NullReferenceException nell'ultima riga, l'istruzione return. Ecco la traccia dello stack:
FailedSystem.NullReferenceException: Riferimento oggetto non impostato su un istanza di un oggetto. a NHibernate.Criterion.Junction.ToSqlString (ICriteria criteri, ICriteriaQuery criteriQuery, IDictionary
2 enabledFilters) a NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition (IDictionary
2 enabledFilters) a NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor (IOuterJoinLoadable persister, CriteriaQueryTranslator traduttore, ISessionFactoryImplementor factory, CriteriImpl criteri, String rootEntityName, IDictionary2 enabledFilters) a NHibernate.Loader.Criteria.CriteriaLoader..ctor (IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriImpl rootCriteria, Stringa rootEntityName, IDictionary
2 enabledFilters) a NHibernate.Impl.SessionImpl.List (CriteriaImpl criteri, risultati IList) a NHibernate.Impl.CriteriaImpl.List (IList risultati) a 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>;
}
Soluzione
L'indizio è nella traccia dello stack.
È solo nella dichiarazione di ritorno che i criteri vengono valutati per produrre un'istruzione 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)
Commenta tutti i tuoi criteri e reintroducili in piccoli gruppi fino a trovare quello che causa il problema.
Molto probabilmente stai facendo riferimento a una proprietà che non esiste o non è mappata o stai fornendo un valore null a un criterio che non la supporta.