1

我正在尝试使以下查询起作用:

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 限制还是我做错了什么?

4

1 回答 1

0

LinqToNHibernate 不是查询数据的完整实现。

使用 CriteriaQuery(大约 95% 的覆盖率关闭所有可能的查询)或 HQL(100% 的覆盖率)。

于 2009-11-17T14:56:30.737 回答