2010-11-11 274 views
0

我想讓我的頭在二流緩存在流利NHibernate。到目前爲止,我已經做了以下內容:Nhibernate第二級緩存爲Newb

  1. 添加到緩存DLL
  2. 增加了一個參考下面當我創建我的會話工廠:

    c.SetProperty(「cache.provider_class」,「 NHibernate.Caches.SysCache.SysCacheProvider,NHibernate.Caches.SysCache「);

    c.SetProperty(「cache.use_second_level_cache」,「true」);

    c.SetProperty(「cache.use_query_cache」,「true」);

  3. 增加了Cache.ReadWrite();針對我希望在ClassMap文件中緩存的所有實體

    public class CountryMap:ClassMap { public CountryMap(){ Table(「Countries」); Id(x => x.CountryID); Map(x => x.CountryName); Cache.ReadWrite(); }}

現在我認爲每當我試圖讓具有Cache.ReadWrite在映射它會緩存它的會話工廠(單)的持續時間的實體()。然而,由於數據庫在每個請求上都被擊中,所以情況並非如此。這裏有幾個問題我有:

  • 該會話的CacheMode屬性做什麼?我的會話持續一個Web請求的持續時間。我是否應該在創建會話時設置此值,如果是這樣,我應該如何設置它?
  • 我在某處讀取緩存未更新,除非進行了提交。我只在數據庫中插入/更新信息時提交數據。例如,如果我有一個國家列表的簡單頁面,我會抓取所有需要的數據,但不會提交數據,因爲我不需要做任何更改。這是否意味着這些數據不會被緩存?我確定我讀過這個錯誤,因爲這意味着一旦數據添加到數據庫中,數據就會被緩存。

如果您能提供幫助,我將不勝感激。謝謝

回答

3

Here對於使用nhibernate的二級緩存是一個很好的解釋。

1

您必須使用第二級高速緩存的事務才能使用。