2
我正在使用NHibernate來查詢我的數據庫中的對象列表。在我得到對象列表後,我遍歷對象列表並應用距離近似算法來查找最近的對象。我認爲這個函數獲取對象列表並將算法應用於它們是一項繁重的操作,因此我將該算法中找到的對象緩存在HttpRuntime.Cache
中。NHibernate正確的方式來重新連接緩存的實體到不同的會話
在這一點之後,無論何時我再次獲得提供的輸入,我都可以直接從Cache中取出對象,而不必觸碰數據庫並遍歷列表。我的對象是一個具有集合的複雜對象,在查詢內部我返回完整的對象列表。我不急於帶回任何子集合,因此當我讀取緩存對象時,我需要延遲加載才能正常工作能夠充分顯示對象。從另一個實例訪問該頁面時同時使用這我的緩存對象回到一個新的會話重新關聯
本來我想
_session.Lock(obj, LockMode.None);
但是我得到的錯誤
非法企圖將 集合與兩個打開的會話關聯起來
然後我嘗試了一些不同的wi日
_session.Merge(obj);
但是看着這NHProf輸出顯示它刪除並重新將我的對象包含的集合與我的對象,這是不是我想要的,儘管它似乎很好地工作。
這樣做的正確方法是什麼?這些看起來都不錯。