在應用程序中我有一個名爲循環的參考表映射到循環實體。基本上NHibernate實體映射的大部分都保持對該表的引用。通常,這些實體有這樣的字段:NHibernate的緩存選項
- StartCycle
- ModificationCycle
- EndCycle
- 週期
等
即使我用每個請求會話我仍然看到在日誌大部分查詢發佈到週期表。當我不是通過循環ID查詢,而是通過屬於循環類型的其他屬性時,就是這種情況。
週期類型幾乎是一成不變的,它有狀態屬性,其實這是一個可以由服務類被改變(如CloseCycleService,開放等)的唯一屬性。 另外Cycle不能被刪除,但可以插入。
所以我想盡量減少查詢次數到週期表。
我可以通過使用應用程序緩存將其緩存在ASP .NET中,並創建另一個抽象層,但在此之前,我想知道NHibernate提供了哪些選項以及哪些是缺點?
我看到的唯一問題是多線程 - 即使週期幾乎是不可變的(和無狀態的),它可能發生兩個請求試圖同時修改同一個實體並可能導致錯誤。但是......這幾乎是不可能的。所以,你可以建議我可以用NHibernate做什麼來將Cycles表的所有內容存儲在緩存中(哦,我也沒有提到該表中的數據數量很小:每個月有一個週期,所以目前它大約20行,並且每月增長1行)並且最小化發佈到週期表的查詢?