NHibernate caching non funziona per tipo anonimo
-
20-09-2019 - |
Domanda
Sto cercando di ottenere la seguente query al lavoro:
Session.Linq<FooBar>()
.SetCachable(true)
.SetCacheRegion("foobar")
.Select(x => new Baz(x.Foo, x.Bar))
.ToList();
Questo funziona quando la cache è spento, ma con cache abilitata I visualizzato il seguente eccezione:
System.InvalidCastException: Impossibile eseguire il cast oggetto di tipo 'Baz' a Tipo 'System.Object []'.
Il resto della traccia dello stack è:
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)
Qualcuno sa se si tratta di una limitazione di NHibernate o sto facendo qualcosa di sbagliato?
Soluzione
LinqToNHibernate non è un'implementazione completa per l'interrogazione dei dati.
Usa CriteriaQuery (copertura del circa il 95% di sconto tutto ciò che è possibile interrogare), o HQL (copertura del 100%).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow