我有一個關於nHibernate的非常簡單的問題,但我真的找不到在谷歌上的答案。簡單的問題,從父母檢索更新的nhibernate對象集合
比方說,我有一個映射的Member
對象,它將1:n外鍵保存爲Mail
對象。我想在用戶進入他的收件箱時爲用戶檢索當前收集的郵件。如果我呼叫memberInstance.Mail
(類型爲IList < \ Mail>),它會取回郵件收集,但不會反映自從memberInstance在登錄過程中保存在緩存中後添加的新郵件,並且不會往返數據庫。如果我創建了一個RetrieveMailForUser
方法,將它傳遞給一個成員實例,然後調用代碼,如Session.CreateCriteria<Mail>
我收到了任何給定成員和所有內容的當前郵件,但如果我從不使用它,因爲在不是最新的成員變量中有一個集合。每次用戶檢查收件箱並將其保存到緩存中時,我都可以刷新該成員,但這似乎有很多開銷。我覺得我錯過了nHibernate的一些基本原理。請幫忙。謝謝!
public static Member GetLoggedInUser()
{
var member = (Member) HttpContext.Current.Session[SESSION_NAME];
if(member != null &&
!NHibernateSessionManager.IsEntityAttachedToCurrentSession(member))
NHibernateSessionManager.AttachEntityToSession(member);
return member;
}
Ë
您提到對集合的更改未反映在緩存項目中。我相信你的問題在於 - 當你從緩存中重新獲得這個項目時,你對對象所做的修改應該會被反映出來。你能提供一些關於如何初始化檢索成員對象並堅持它的更多信息嗎? –
對不起,它保存在ASP網絡會話中,而不是緩存,我用檢索用戶的代碼編輯了我的原始問題。 – Eitan