Question

Je suis en train de faire la requête suivante au travail:

Session.Linq<FooBar>()
    .SetCachable(true)
    .SetCacheRegion("foobar")
    .Select(x => new Baz(x.Foo, x.Bar))
    .ToList();

Cela fonctionne lorsque la mise en cache est désactivé, mais le cache est activé I l'exception suivante:

System.InvalidCastException: Impossible de jeter l'objet de type 'Baz' à type 'System.Object []'.

Le reste de la trace de la pile est la suivante:

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) 

Quelqu'un sait si cela est une limitation NHibernate ou que je fais quelque chose de mal?

Était-ce utile?

La solution

LinqToNHibernate n'est pas une mise en œuvre complète pour la recherche de données.

Utilisation CriteriaQuery (environ de couverture de 95% sur tout ce qui est possible à la requête), ou HQL (couverture de 100%).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top