WoF*_*gel 5 c# nhibernate caching fluent-nhibernate syscache
环境: NHibernate 4.0.0.4000; NHibernate.Caches.SysCache 4.0.0.4000; Web MVC / API 4.5.1;FluentNHibernate 1.4.0.0; VS2013;
我正在尝试在nhibernate上缓存一个SQL查询(无需缓存即可完美运行),如下所示:
return Session.CreateSQLQuery(sql)
.AddScalar("Id", NHibernateUtil.Int32)
.AddScalar("Summary", NHibernateUtil.String)
.SetResultTransformer(Transformers.AliasToBean<ProductDto>())
.SetCacheable(true)
//.SetCacheRegion("Long") throws same error regardless of this
.List<ProductDto>()
;
Run Code Online (Sandbox Code Playgroud)
但它一直抛出ArgumentNullException,请参阅详细信息:
Value cannot be null.
Parameter name: source
at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source, Func`2 predicate)
at NHibernate.Util.ArrayHelper.CountTrue(Boolean[] array)
at NHibernate.Transform.CacheableResultTransformer.Create
...
Run Code Online (Sandbox Code Playgroud)
我试图使用另一个缓存提供程序,即NHibernate.Caches.RtMemoryCache,但是错误是相同的。
调用之后也不会记录任何休眠信息,因为该错误显然是在其管道的早期出现的。
使用Fluent NHibernate进行缓存配置:
(OracleClientConfiguration.Oracle10.ConnectionString(connStr).AdoNetBatchSize(20000)).Cache(c => c.ProviderClass<SysCacheProvider>().UseSecondLevelCache().UseQueryCache())
Run Code Online (Sandbox Code Playgroud)
关于缓存设置的日志信息(如果我使用区域,自然会发生变化):
INFO 2014-11-03 08:51:33,474 [1 ] NHibernate.Cache.StandardQueryCache - starting query cache at region: NHibernate.Cache.StandardQueryCache
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?还是这个问题缺少信息?
谢谢!
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |