ArgumentNullException при кэшировании sqlquery в NHibernate

Окружающая среда: NHibernate 4.0.0.4000; NHibernate.Caches.SysCache 4.0.0.4000; Web MVC / API 4.5.1; FluentNHibernate 1.4.0.0; VS2013;

Я пытаюсь кэшировать SQL-запрос на nhibernate (который прекрасно работает без кэширования), как вы можете видеть:

        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>()
            ;

но он продолжает выдавать 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
   ...

Я пытался использовать другой поставщик кэширования, а именно NHibernate.Caches.RtMemoryCache, но ошибка та же.

Также никакая информация nhibernate не регистрируется после вызова, так как ошибка, по-видимому, происходит на очень раннем этапе его конвейера.

Конфигурация кеша с использованием Fluent NHibernate:

 (OracleClientConfiguration.Oracle10.ConnectionString(connStr).AdoNetBatchSize(20000)).Cache(c => c.ProviderClass<SysCacheProvider>().UseSecondLevelCache().UseQueryCache())

Информация журнала о настройке кэша (изменяется, если я использую регион, естественно):

INFO  2014-11-03 08:51:33,474 [1    ] NHibernate.Cache.StandardQueryCache      - starting query cache at region: NHibernate.Cache.StandardQueryCache

Есть идеи? А может, в вопросе не хватает информации?

Спасибо!

0 ответов

Другие вопросы по тегам