2010-06-03 72 views
1

我一直在努力實現與功能NHibernate緩存區域的緩存區,我已經做了迄今爲止以下:如何配置功能NHibernate和syscache2

1)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)改變了我的類映射,以使高速緩存,並設置選擇的區域:

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

希望我做正確的上面,但我真的不能找出磨片重新配置每個區域的優先級和緩存持續時間。你知道怎麼做嗎?如果你碰巧在上面的代碼中發現缺陷,我真的很感激反饋。

回答

3

您需要在web/app.config中的syscache配置中添加此區域的優先級和到期時間。請看this excellent post以獲得有關使用二級緩存的詳細說明。這些例子使用了vanilla NHibernate,但你應該明白 - 關於配置系統緩存的一點是在帖子的末尾。

+0

好的,根據帖子我不能配置緩存通過流利nhibernate,所以我將需要修復至少會議工廠香草風格。謝謝。 – 2010-06-04 11:26:46