Frage

Ich versuche, die folgende Abfrage an der Arbeit zu bekommen:

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

Das funktioniert, wenn Caching ausgeschaltet ist, aber mit Caching aktiviert I erhalten die folgende Ausnahme:

System.InvalidCastException: Kann nicht Gussobjekt des Typs 'Baz' zu Typ 'System.Object []'.

Der Rest des Stack-Trace ist:

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) 

Wer weiß, ob es sich um eine NHibernate Einschränkung oder bin ich etwas falsch zu machen?

War es hilfreich?

Lösung

LinqToNHibernate ist keine vollständige Implementierung für Daten abfragt.

Mit CriteriaQuery (ca. 95% Deckung Sie alle, die Abfrage möglich ist) oder HQL (100% Deckung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top