Nhibernate NullReferenceException retornando Lista de objetos de domínio
-
05-07-2019 - |
Pergunta
A seguir está o código que estou usando. Parece muito simples para mim. Mas eu recebo um NullReferenceException na última linha, a instrução de retorno. Aqui está o rastreamento de pilha:
FailedSystem.NullReferenceException: Objecto de referência não definida para uma instância de um objecto. em NHibernate.Criterion.Junction.ToSqlString (ICriteria critérios, ICriteriaQuery criteriaQuery, IDictionary
2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary
2 enabledFilters) a NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor (IOuterJoinLoadable persister, CriteriaQueryTranslator tradutor, ISessionFactoryImplementor fábrica, critérios CriteriaImpl, String rootEntityName, IDictionary2 enabledFilters) at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary
2 enabledFilters) a NHibernate.Impl.SessionImpl.List (CriteriaImpl critérios, os resultados IList) a NHibernate.Impl.CriteriaImpl.List (IList resultados) 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>;
}
Solução
A pista está no seu rastreamento de pilha.
É apenas a sua declaração de retorno que os critérios é avaliado para produzir uma instrução 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 a todos os seus critérios e reintroduzi-los em pequenos grupos até encontrar aquele que está causando o problema.
O mais provável é que você está referenciando uma propriedade que existem does't, ou não está mapeada, ou o fornecimento de um nulo com um critério que não apoiá-lo.