2011-06-07 36 views
0

我讀到Nhibernate異常導致無效的會話狀態。所以,我的問題是我應該處理哪些異常並關閉並重新打開會話。而且,我應該重新加載所有實體嗎?哪些異常會導致關閉Nhibernate會話?

我的場景 - 我在我的演示者類中爲表單打開一個會話。而且,我正在使用的交易如



using (ITransaction transaction = session.BeginTransaction()) 
      { 
       foreach (var item in records) 
       { 
        session.Delete(item); 
       } 
       transaction.Commit(); 
      } 

so, should I do this? 

using (ITransaction transaction = session.BeginTransaction()) 
      { 
       foreach (var item in records) 
       { 
        session.Delete(item); 
       } 
       try 
       { 
       transaction.Commit(); 
       } 
      catch(Exception ex) 
       { 
       rollback, 
       session.dispose 
       session = factor.opensession() 
       } 

      } 

回答

0

首先,我一直使用第二個選項。現在回答這個問題,處理和開放新會話是practically painless,所以我通常不介意「如果發生任何錯誤」。