Por que session.createcriteria (typeof (…)) falha para um tipo não mapeado?
-
26-09-2019 - |
Pergunta
Para cada entidade que eu crio, escrevo um teste de unidade que carregue apenas um registro do banco de dados para ver se a consulta funciona e os dados podem ser definidos na entidade corretamente. Você pode ver isso como um teste de unidade para o mapeamento básico. Isso também deve confirmar que existe um arquivo de mapeamento para o tipo e é definido como recurso incorporado.
O teste se parece com este (o teste reside na classe base genérica):
session.CreateCriteria(typeof(TEntity)).SetMaxResults(1).List();
Não faço nenhuma afirmação, só quero ver se essa linha funciona sem jogar exceções.
Agora, em um caso, esqueci de definir o arquivo de mapeamento como recurso incorporado, mas o teste ainda funcionou. No entanto, nenhuma consulta foi enviada ao banco de dados, por isso basicamente não fez nada.
Por que o createCritereria () ou list () não falha para um tipo não mapeado? E como posso testar esse requisito específico?
EDITAR: Se descobriu que a linha a seguir joga uma exceção, mas ainda se perguntando sobre o primeiro caso
session.CreateCriteria(typeof(TEntity)).SetMaxResults(1).Future<TEntity>().ToArray()
Solução
Eu não sei, mas aparentemente no Nibernate eles também não sabem. Ver https://nhibernate.jira.com/browse/nh-2183 Para um bug que foi relatado sobre esse assunto. Eles ainda estão trabalhando nisso.