NHibernate almacenamiento en caché que no trabaja para el tipo anónimo
-
20-09-2019 - |
Pregunta
Estoy tratando de obtener la siguiente consulta para trabajar:
Session.Linq<FooBar>()
.SetCachable(true)
.SetCacheRegion("foobar")
.Select(x => new Baz(x.Foo, x.Bar))
.ToList();
Esto funciona cuando el caché está desactivada, pero con el almacenamiento en caché habilitado I recibirá la siguiente excepción:
System.InvalidCastException: No se puede convertir objeto de tipo 'Baz' a Tipo 'System.Object []'.
El resto de la traza de la pila es:
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)
Alguien sabe si esto es una limitación NHibernate o estoy haciendo algo mal?
Solución
LinqToNHibernate no es una aplicación completa para la consulta de datos.
Uso CriteriaQuery (alrededor del 95% de cobertura de todo lo que es posible consultar), o HQL (cobertura del 100%).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow