문제

다음 쿼리가 작동하려고합니다.

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

캐싱이 꺼져있을 때 작동하지만 캐싱이 활성화되면 다음과 같은 예외가 있습니다.

System.InvalidCastException : 'BAZ'유형의 객체를 타이핑하여 '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