我正在尝试使用以下查询:
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的限制,还是我做错了什么?
答案 0 :(得分:0)
LinqToNHibernate不是查询数据的完整实现。
使用CriteriaQuery(所有可查询的覆盖率约为95%)或HQL(100%覆盖率)。