我爲我的項目使用NHibernate。我在NHibernate上工作的初學者很多。NHibernate多對多和ISession.Close()
我使用多對多關係映射「用戶」和「角色」。下面是代碼,以獲取用戶:
public User GetUser(int userId){
using(ISessuib session = new SessionManager().GetSession())
{
return session.Get<User>(userId);
}
}
public void LazyLoadUsingSessionTest(){
var user= GetUser(1);
Assert.NotNull(user.Roels);
}
它拋出一個異常:無法懶洋洋地初始化集合,沒有會話或會話關閉
如果我不使用「使用」的聲明在「GetUser」方法中,它起作用。 但我必須調用session.Close()當我在網頁中使用它來釋放資源
,我只希望使用的getUser(),而不是ISession的object.so我的問題是:這是否意味着我必須在我的網頁上有一個ISession對象(釋放resouse)?或任何更好的解決方案?(因爲我不希望的Isession對象出現在我的aspx.cs文件)
感謝!
對不起,但這是一個壞建議。通過這種方式,您可以同時銷燬惰性加載和事務隔離,同時用大量垃圾炸燬代碼。 – 2009-11-03 13:26:00