2009-11-17 2 views
1

Я пытаюсь получить следующий запрос к работе:кэширования NHibernate не работает для анонимного типа

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

Это работает, когда кэширование отключено, но с поддержкой кэширования я получить следующее исключение:

System.InvalidCastException: Невозможно передать объект типа «Baz» в type '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 или я делаю что-то не так?

ответ

0

LinqToNHibernate не является полной версией для запроса данных.

Критерии использования (около 95% охвата всего, что можно запросить), или HQL (покрытие 100%).

 Смежные вопросы

  • Нет связанных вопросов^_^