質問

私は仕事に次のクエリを取得しようとしています:

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%被覆率)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top