Nibernate cache não funcionando para o tipo anônimo
-
20-09-2019 - |
Pergunta
Estou tentando fazer com que a seguinte consulta funcione:
Session.Linq<FooBar>()
.SetCachable(true)
.SetCacheRegion("foobar")
.Select(x => new Baz(x.Foo, x.Bar))
.ToList();
Isso funciona quando o cache é desligado, mas com o cache ativado, recebo a seguinte exceção:
System.InValidCastException: Incapaz de fundir o objeto do tipo 'baz' para digite 'System.Object []'.
O resto do rastreamento da pilha é:
at NHibernate.Cache.StandardQueryCache.Put(QueryKey key, ICacheAssembler[] returnTypes, IList result, Boolean isNaturalKeyLookup, ISessionImplementor session)
at NHibernate.Loader.Loader.PutResultInQueryCache(ISessionImplementor session, QueryParameters queryParameters, IType[] resultTypes, IQueryCache queryCache, QueryKey key, IList result)
at NHibernate.Loader.Loader.ListUsingQueryCache(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results)
Alguém sabe se isso é uma limitação de Nibernato ou estou fazendo algo errado?
Solução
LinqtonHibernate não é uma implementação completa para consultar dados.
Use critérieQuery (cerca de 95% de cobertura de tudo o que é possível para consultar) ou HQL (100% de cobertura).
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow