What does NH Prof report?
Are you specifying the expiration? I think that the default expiration is 5
minutes.


On Mon, Sep 28, 2009 at 3:47 AM, Jopo <[email protected]> wrote:

>
> Hi All,
>
> I have been having issues with NHibernate’s 2nd level caching while
> using the SysCache2 provider. I am receiving a lot of random caching
> misses that are occurring roughly every 3-5 minutes or so. The 2nd
> level caching appears to be working when inspecting database calls
> through SQL profiler, i.e. for cached queries or entities, first time
> they are loaded into the 2nd level cache a query is sent and after
> that no query is sent until the next miss.
>
> I am using what I believe is the latest version from the trunk of the
> SysCache2 provider (as of last week). I built the solution against a
> NHibernate version from more than a few months ago. I would really
> like to get this caching provider working because of the SQL Server
> Dependencies functionality. I’ve tried SysCache but that does not
> build against my NHibernate version.
>
> I’ve searched the net and found that some people are having the same
> problem but their solution did not work for me:
>
> https://forum.hibernate.org/viewtopic.php?p=2406601
>
> Below are my settings and configurations:
>
> *Web.config*
>
>    <section name="syscache2"
> type="NHibernate.Caches.SysCache2.SysCacheSection,
> NHibernate.Caches.SysCache2"/>
>
>  <syscache2>
>  <cacheRegion name="ReferenceData">
>    <dependencies>
>      <tables>
>        <add name="DomainObjectA" databaseEntryName="DatabaseName"
> tableName="dbo.DatabaseObjectA" />
>        <add name=" DomainObjectB " databaseEntryName="
> DatabaseName" tableName="dbo. DatabaseObjectB" />
>      </tables>
>    </dependencies>
>  </cacheRegion>
>  </syscache2>
>
> *Session Factory.config*
>
>  <session-factory name=" DatabaseName">
>  <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</
> property>
>  <property
> name="connection.provider">NHibernate.Connection.DriverConnectionProvider</
> property>
>  <property
> name="connection.driver_class">NHibernate.Driver.SqlClientDriver</
> property>
>  <property name="cache.use_second_level_cache">true</property>
>  <property name="cache.use_query_cache" >true</property>
>  <property
> name="cache.provider_class">NHibernate.Caches.SysCache2.SysCacheProvider,
> NHibernate.Caches.SysCache2</property>
>  <!--<property
> name="connection.connection_string_name">DatabaseConnectionString</
> property>-->
>  <property name="show_sql">false</property>
>  <property name="generate_statistics">false</property>
>  <property name="max_fetch_depth">1</property>
>  <property name="connection.isolation">ReadCommitted</property>
>  <property name="default_schema">dbo</property>
>   <mapping assembly="AssemblyName.Repositories" />
> </session-factory>
> </hibernate-configuration>
>
> *Mapping Files*
>
> ObjectA.hbm
> <class name="BusinessLogic.Domain.ObjectA, BusinessLogic.Domain"
> table="ObjectA" optimistic-lock="version">
>
>  <id name="Id" column ObjectAId" access="field.camelcase-
> underscore">
>    <generator class="identity" />
>  </id>
>
>  <version name="Version" column="RowVersion"
> access="field.camelcase-underscore" />
>
>  <many-to-one name=" ObjectB" class="BusinessLogic.Domain.ObjectB,
> BusinessLogic.Domain" access="field.camelcase-underscore">
>    <column name=" ObjectBId" not-null="true" fetch="select"
> lazy="false"/>
>  </many-to-one>
>
> <property>
> …
> <property />
>  </class>
>
> ObjectB.hbm
>  <class name=" BusinessLogic.Domain.ObjectB, BusinessLogic.Domain "
> table="ObjectB" optimistic-lock="none" mutable="true">
>  <cache usage="read-only" region="ReferenceData"/>
>  <id name="Id" column="ObjectBId" access="field.camelcase-
> underscore">
>    <generator class="assigned" />
>  </id>
>
> <property>
> …
> <property>
> </class>
>
> *Query Example*
>
>      public List<ObjectB> GetObjectBReferenceData()
>      {
>          List<ObjectB> objectBs = new List<ObjectB>();
>          ICriteria critObjectBs =
> UnitOfWork.CurrentSession.CreateCriteria(typeof(ObjectB))
>                                  .SetCacheable(true);
>          objectBs = critObjectBs.List<ObjectB>() as
> List<ObjectB>;
>          return objectBs;
>      }
>
> Please note that I am using Nhibernate version 2.0.1.X (where X is the
> latest from the trunk) as opposed to using Nhibernate 2.0.1.400 which
> has some serious memory leak issues:
>
> http://www.rasmuskl.dk/post/A-WinDbg-Debugging-Journey-NHibernate-Memory-Leak.aspx?dzref=142850
>
> Any help or direction would be very much appreciated.
>
> Thanks,
> Joe Turcic
> Senior .NET Developer
> Email: [email protected]
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"NHibernate Contrib - Development Group" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com.ar/group/nhcdevs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to