2010-07-14 80 views
0

當點擊保存按鈕,下面的代碼運行[PersistenceSession是返回一個ISession實例的屬性]:NHibernate的 - 骯髒的ISession不更新

_storedWill = PersistenceSession.Load<StoredWill>(_storedWillId); 
_storedWill.WillReference = txtWillReference.Text; 
_storedWill.IntroducerReference = txtIntroducerReference.Text; 
//A stack of other properties of the _storedWill object assigned 
PersistenceSession.SaveOrUpdate(_storedWill); 

斷點上最後一行設置表明PersistenceSession。 IsDirty()是真的。

但是,沒有生成更新SQL。誰能想到爲什麼?

感謝

大衛

回答

1

您需要Flush會話有發送到數據庫的更新。 SaveOrUpdate將不會向數據庫發送任何內容,除非您持久保存一個新創建的實體,該實體的ID值由數據庫生成。由於您只是更新,所有這些都確保_storedWill實體與PersistenceSession屬性返回的ISession相關聯。

+0

哦,這是你再次,用你的長號!技巧如何? :) 或者您可以創建一個ITransaction並提交它。我不確定每種方法的優缺點。 – David 2010-07-14 10:14:35

+0

:)很好,謝謝。不確定ITransaction方法是否會嘗試使用分佈式事務,由於可能的防火牆端口要求,這在某些環境中當然會存在問題。 – 2010-07-14 14:19:24