NHibernateのキャッシュは、匿名型のために働いていません
-
20-09-2019 - |
質問
私は仕事に次のクエリを取得しようとしています:
Session.Linq<FooBar>()
.SetCachable(true)
.SetCacheRegion("foobar")
.Select(x => new Baz(x.Foo, x.Bar))
.ToList();
このキャッシュがオフになっているときに動作しますが、キャッシュは、私が有効になっています 次の例外を受け取ります:
System.InvalidCastExceptionの:への型のオブジェクトをキャストすることができません「バズ」 型 'System.Objectの[]'。の
スタックトレースの残りの部分はあります:
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)
これはNHibernateの制限であるならば誰でも知っているか、私が何か間違ったことをやっている?
解決
LinqToNHibernateデータを照会するための完全な実装ではありません。
使用CriteriaQuery(約95%のカバレッジオフ照会することが可能であることをすべて)、またはHQL(100%被覆率)。
所属していません StackOverflow