Pergunta

Estou tentando fazer com que a seguinte consulta funcione:

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

Isso funciona quando o cache é desligado, mas com o cache ativado, recebo a seguinte exceção:

System.InValidCastException: Incapaz de fundir o objeto do tipo 'baz' para digite 'System.Object []'.

O resto do rastreamento da pilha é:

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) 

Alguém sabe se isso é uma limitação de Nibernato ou estou fazendo algo errado?

Foi útil?

Solução

LinqtonHibernate não é uma implementação completa para consultar dados.

Use critérieQuery (cerca de 95% de cobertura de tudo o que é possível para consultar) ou HQL (100% de cobertura).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top