我想知道在NHibernate中是否有任何功能來檢查是否對對象進行了更改,意味着它已被加載,需要寫入數據庫來保存。NHibernate檢查更改爲提示保存
我還有其他一些片段,比如當前選定的元素等等,可能會改變,但是如果他們這樣做,它在實際數據方面沒有什麼區別。
如果在WPF/C#中檢查是否有需要保存的更改,那麼我可以在退出前提示用戶。
感謝
我想知道在NHibernate中是否有任何功能來檢查是否對對象進行了更改,意味着它已被加載,需要寫入數據庫來保存。NHibernate檢查更改爲提示保存
我還有其他一些片段,比如當前選定的元素等等,可能會改變,但是如果他們這樣做,它在實際數據方面沒有什麼區別。
如果在WPF/C#中檢查是否有需要保存的更改,那麼我可以在退出前提示用戶。
感謝
簡短的回答:你需要實現your own "IsDirty" methods。
NHibernate的設計工作 而不給 實體類的任何要求。它會在 會話中進行內部跟蹤 會話是否被 會話跟蹤。雖然它會是 很好,如果它暴露了一些方法 ISession檢查實體是否爲 髒,這並沒有解決變化 作出實體,而他們是 從會話中分離。
_
你的類可以實現ICloneable 和IEquatable,那麼你可以做一個 克隆你的對象,你讓 用戶之前進行更改,然後 該克隆後比作當前對象 看他們是不是 更長一樣。
如果您 類中的藏品也實現了ICloneable和 IEquatable,這種方法也可以讓 你知道,如果事情發生了轉變 某處層次。
您可以查詢Session.IsDirty
,如果有任何對象發生變化,它將返回true。
更復雜的方法涉及獲取SessionImplementor,Persister,PersistenceContext和當前值,然後在那裏使用FindDirty。
我不推薦它,但如果需要,我可以給你代碼。最好在ViewModel級別跟蹤它。