Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate和Memcached-教程/示例_C#_.net_Nhibernate_Memcached_Membase - Fatal编程技术网

C# NHibernate和Memcached-教程/示例

C# NHibernate和Memcached-教程/示例,c#,.net,nhibernate,memcached,membase,C#,.net,Nhibernate,Memcached,Membase,我已经在Membase服务器上安装了几个bucket设置,我正在寻找一个好的教程或示例,介绍如何使用它作为NHibernate的二级缓存 我感兴趣的是示例配置是什么样的,以及是否需要在代码中执行任何操作,或者是否可以通过我的NHibernate映射处理所有这些操作 感谢您的帮助。在映射文件中,您需要包括以下属性: <class name="ClassName" table="Table"> <cache usage="read-write" /> <!-

我已经在Membase服务器上安装了几个bucket设置,我正在寻找一个好的教程或示例,介绍如何使用它作为NHibernate的二级缓存

我感兴趣的是示例配置是什么样的,以及是否需要在代码中执行任何操作,或者是否可以通过我的NHibernate映射处理所有这些操作


感谢您的帮助。

在映射文件中,您需要包括以下属性:

<class name="ClassName" table="Table">
   <cache usage="read-write" />
   <!-- SNIP -->
</class>

选项有读写(读提交隔离)、非严格读写(很少写入的对象、更好的性能但会增加过时数据的机会)或只读(从不更改的数据)

然后,在web(或应用程序)配置中,您需要一个部分来配置memcached:

<configuration>
  <configSections>
    <!-- SNIP -->
    <section name="memcache" type="NHibernate.Caches.MemCache.MemCacheSectionHandler,NHibernate.Caches.MemCache" />
  </configSections>
  <memcache>
    <memcached host="127.0.0.1" port="11211" weight="2" />
  </memcache>
  <!-- SNIP -->
</configuration>

最后,在会话工厂配置中,请确保使用:

  <hibernate-configuration>
    <session-factory>
      <!-- SNIP -->

      <property name="expiration">300</property> <!--memcache uses seconds -->
      <property name="cache.provider_class">NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache</property>
      <property name="cache.use_second_level_cache">true</property>
      <property name="cache.use_query_cache">false</property> <!-- true if you want to cache query results -->
    </session-factory>
  </hibernate-configuration>

300
NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache
真的
假的
当然,您需要从的相应版本下载并引用dll,以获得正确的缓存提供程序。memcached one也依赖于ICSharpCode.SharpZipLib和memcached.ClientLibrary(下载中包含的s/b)


如果您使用的是fluent NHibernate,那么在会话工厂的设置链中有一个.Cache方法,您可以使用它,尽管有些属性需要通过调用.ExposeConfiguration手动设置。

我发现这个示例不完整。首先,您必须将Memcached服务器安装到某个位置(如果要在Windows机箱上作为服务安装,请参阅上的部分说明)。在添加Memcached客户端二进制文件时,我发现3.2的二进制文件依赖于log4net.dll,因此我必须将其与Memcached客户端二进制文件一起复制。此外,添加过期密钥会在我的项目中产生错误。我如何为Windows Azure VM安装memcache