我已经待了好几天了。我已经配置了我的Web /应用程序配置,以将二级缓存与Memcached服务器和NHContrib的提供程序一起使用。在测试中,我还没有得到任何例外,我看到它没有为我设置了cacheable = true的查询使用缓存。
如果我将提供程序切换到NHibernate.Cache.HashtableCacheProvider并测试它是否按预期工作。

这是我正在使用的相关配置部分

<configuration>
  <configSections>
  <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler,NHibernate" />
  <section name="memcache" type="NHibernate.Caches.MemCache.MemCacheSectionHandler,NHibernate.Caches.MemCache" />
  </configSections>
  <memcache>
    <memcached host="192.168.215.60" port="11211" />
  </memcache>

  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="connection.provider">
        NHibernate.Connection.DriverConnectionProvider
      </property>
      <property name="dialect">
        MT.Core.Persistence.Dialect, MT.Core
      </property>
      <property name="connection.driver_class">
        NHibernate.Driver.SqlClientDriver
      </property>
      <property name="connection.connection_string">
        Server=192.168.1.1;Initial Catalog=Test;User ID=TestUser;Password=fakepassword;
      </property>
      <property name="show_sql">true</property>
      <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu</property>
      <property name="cache.provider_class">NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache</property>
      <!--<property name="cache.provider_class">NHibernate.Cache.HashtableCacheProvider</property>-->
      <property name="cache.use_second_level_cache">true</property>
      <property name="cache.use_query_cache">true</property>
    </session-factory>

  </hibernate-configuration>
</configuration>

最佳答案

问题最终归结于连接问题。我使用log4net将任何错误记录到控制台和应用程序日志中。那时我终于看到了有关连接到内存缓存服务器的错误。将代码提升到同一位置的服务器后,错误消失了。我早就已经学会使用log4net。

关于java - NHibernate的Memcached Provider无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2021659/

10-13 05:44