2009-02-12 76 views
29

有誰知道是否有可能使用NHibernate來判斷對象上的特定屬性是否髒(即屬性與存儲在數據庫中的屬性不同)?我可以通過使用nhibernate來判斷一個屬性是否髒?

這個問題的背景是,我將有一個對象具有(相對)大量的屬性。我需要能夠將一個參數(字符串)傳遞給一個函數,該函數將確定該頁面的生命週期內該特定屬性是否已更改。

如果我需要我可以創建對象的副本,並在頁面生命週期結束時使用反射來檢查值,但我不願意這樣做。如果NHibernate能夠簡單地告訴我一個屬性是否髒,那將會很棒。

感謝

回答

23
+3

的交錯誤地計算爲髒狀態,變化到:的Int32 [] dirtyProps = oldState.Select((O,I)=>的Object.Equals(原狀態數[I],currentState [i])?-1:i).Where(x => x> = 0).ToArray()。事實上,這個骯髒的檢查可以通過IEntityPersister.FindDirty從persister中獲得。示例:http://stackoverflow.com/questions/1690755/in-nhibernate-my-check-if-entity-is-dirty-fails – Llyle 2014-04-09 03:03:27

1

這是不是目前可以通過NHibernate的(或Hibnernate,據我所知)API。你可以自己寫這樣的東西,通過存儲對象的狀態,當它們被加載到會話中,然後比較它們。

注意:我沒有見過這個,但是,如果你還沒有鎖定ORM選擇,你應該看看亞音速。在對象本身中跟蹤很多髒狀態,並且您可以確定某個特定屬性是否髒。

相關問題