标签: syscache

NHibernate 3.3和SysCache

当前版本的SysCache似乎不适用于NHibernate 3.3.我在我的web/bin目录中替换了NHibernate dll,并且保持了SysCache dll(与3.2一起工作).现在当IIS尝试进行预绑定时,它会加载SysCache dll并尝试将其绑定到NHibernate 3.2.0.4000并失败.

[FileLoadException:无法加载文件或程序集'NHibernate,Version = 3.2.0.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)] System.RuntimeTypeHandle.GetTypeByName(String name,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly,StackCrawlMarkHandle stackMark,Boolean loadTypeFromPartialName,ObjectHandleOnStack type)+0
System.RuntimeTypeHandle.GetTypeByName(String name,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly,StackCrawlMark&stackMark,Boolean loadTypeFromPartialName)+95
System.RuntimeType.GetType(String typeName,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly,StackCrawlMark&stackMark)+54 System.Type.GetType(String typeName)+50 NHibernate.Util .ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName name,Boolean throwOnError)+338
NHibernate.Cfg.SettingsFactory.CreateCacheProvider(IDictionary`2 properties)+175

[HibernateException:无法实例化CacheProvider:NHibernate.Caches.SysCache.SysCacheProvider,NHibernate.Caches.SysCache]
NHibernate.Cfg.SettingsFactory.CreateCacheProvider(IDictionary 2 properties)+3449 NHibernate.Cfg.Configuration.BuildSettings()+29 NHibernate.Cfg .Configuration.BuildSessionFactory()+ 442 properties) +256
NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary

如果我在web.config中注释掉配置一切都很好:

<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache" >true</property>
<property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
Run Code Online (Sandbox Code Playgroud)

NHibernate Contrib的 NHibernate缓存下载站点没有最新版本的下载.

nhibernate syscache

16
推荐指数
2
解决办法
7589
查看次数

在NHibernate上缓存sqlquery时出现ArgumentNullException

环境: 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)

有任何想法吗?还是这个问题缺少信息?

谢谢!

c# nhibernate caching fluent-nhibernate syscache

5
推荐指数
0
解决办法
293
查看次数

具有外部更新的NHibernate二级缓存

我有一个99%只读的Web应用程序,它有一个单独的服务,可以按特定的时间间隔更新数据库(比如每10分钟).该服务如何告诉应用程序使其二级缓存失效?它真的很重要吗?(我实际上并不关心我是否有过多的陈旧数据)如果我没有使缓存失效需要多长时间才能更新记录(如果使用SysCache)

nhibernate caching syscache

4
推荐指数
1
解决办法
1741
查看次数

如何在 nhibernate 中为 syscache 配置缓存区域?

我尝试使用网站上的这篇文章这样的缓存配置:

<configSections>
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" requirePermission="false"/>
    <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache" requirePermission="false" />
</configSections>

<!-- NHibernate -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
        <!-- dialect, connection string, etc... -->

        <property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
        <property name="cache.use_second_level_cache">true</property>
    </session-factory>
</hibernate-configuration>

<!-- Caching -->
<syscache>
    <cache region="LongTerm" expiration="3600" priority="5" />
    <cache region="ShortTerm" expiration="900" priority="3" />
</syscache>

<-- ... -->
Run Code Online (Sandbox Code Playgroud)

不过,似乎我的 hibernate.cfg.xml 的架构文件不喜欢这个。我应该使用 cache.region_prefix 还是什么?我想使用 Syscache,顺便说一句。

c# nhibernate syscache

3
推荐指数
1
解决办法
2275
查看次数

为什么NHibernate不会在第二次请求时使用二级缓存?

我有以下型号.

<class name="Navigation" table="`navigation`">
    <cache usage="nonstrict-read-write" region="LongTerm" />

    <id name="Id" column="`navigation_id`" type="Int16" unsaved-value="0">
        <generator class="native" />
    </id>

    <property name="Name" column="`navigation_name`" type="String" not-null="true" />
    <property name="DateCreated" column="`navigation_date-created`" type="DateTime" not-null="true" />
    <property name="DateSaved" column="`navigation_date-saved`" type="DateTime" not-null="true" />
    <property name="Active" column="`navigation_active`" type="Boolean" not-null="true" />
    <property name="RestrictToWebMaster" column="`navigation_web-master-restrict`" type="Boolean" not-null="true" />

    <many-to-one name="User" column="user_id" class="User" />

    <set name="Items" order-by="`navigation-item_index` asc" inverse="true" cascade="all-delete-orphan">
        <cache usage="nonstrict-read-write" region="LongTerm" />

        <key column="`navigation_id`" />
        <one-to-many class="Navigation+Item" />
    </set>
</class>
Run Code Online (Sandbox Code Playgroud)

然后我有一个查询集合的test.aspx.

DataProvider provider = new DataProvider(SessionManager.GetSession());

protected void Page_Load(object sender, …
Run Code Online (Sandbox Code Playgroud)

nhibernate caching syscache

1
推荐指数
1
解决办法
805
查看次数

标签 统计

nhibernate ×5

syscache ×5

caching ×3

c# ×2

fluent-nhibernate ×1