How to configure cache regions in fluent nhibernate and syscache2

Posted by Marcus Oldin on Stack Overflow See other posts from Stack Overflow or by Marcus Oldin
Published on 2010-06-03T08:48:31Z Indexed on 2010/06/03 8:54 UTC
Read the original article Hit count: 839

Filed under:
|
|

Hi,

I've been trying to implement cache regions with fluent nhibernate and I've done the following so far:

  1. Setup caching in Fluently.Configure():

    private static ISessionFactory CreateSessionFactory()
    {
        string csStringName = Environment.MachineName;
    
    
    
    var nhibConfigProps = new Dictionary<string, string>();
    nhibConfigProps.Add("current_session_context_class","web");
    
    
    var cfg = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008
                      .ConnectionString(c => c.FromConnectionStringWithKey(csStringName))
                      .ShowSql()
                      .Cache(cache=>cache.ProviderClass<NHibernate.Caches.SysCache2.SysCacheProvider>().UseQueryCache()))
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserMap>())
        .ExposeConfiguration(config => config.AddProperties(nhibConfigProps))
        .ExposeConfiguration(config=> config.EventListeners.DeleteEventListeners = new IDeleteEventListener[] {new SoftDeleteListener()})
        .ExposeConfiguration(config => new SchemaUpdate(config).Execute(false, true))
        .BuildSessionFactory();
    
    
    return cfg;
    }
    
  2. Changed my ClassMap to enable cache, and set the region of choice:

     public UserMap()
     {
         Cache.ReadWrite().Region("User");
         ...
     }
    

Hopefully I've done the above correctly, but I can't really figure out where to configure the priority and cache duration for each region. Do you know how to do that? And if you happen to find flaws in the above code I'd really appreciate the feedback.

TIA//Marcus

© Stack Overflow or respective owner

Related posts about c#

Related posts about fluent-nhibernate