2009-11-17 1 views
1

작동하지 :NHibernate에 캐싱은 내가 해결하려면 다음 쿼리를 얻기 위해 노력하고 익명 형식

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

캐싱이 꺼져있을 때이 작동하지만, 캐싱이 활성화 된 나는 다음과 같은 예외가 나타납니다 :

System.InvalidCastException : 'Baz'형식의 개체를 'System.Object []'형식으로 캐스팅 할 수 없습니다.

스택 추적의 나머지는이이 NHibernate에 제한이있는 경우

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) 

아는 사람 아니면 내가 뭔가 잘못하고있는 중이 야?

답변

0

LinqToNHibernate는 데이터를 쿼리하기위한 완전한 구현이 아닙니다.

CriteriaQuery (쿼리 가능 범위에서 약 95 % 적용) 또는 HQL (100 % 적용 범위)을 사용하십시오.

관련 문제