2010-10-27 196 views
1

我有NHibernate更新我的一些實體時,這不應該發生(髒檢查)的問題。 當我使用NHibernate.Mapping.Attributes來映射我的類時,我發現有一個參數「檢查」NHMA的元素「類」。我想知道如果我可以關閉髒檢查通過設置此參數爲false或其他(所需的類型爲此參數是字符串,所以它可能不是)。NHibernate映射屬性+骯髒檢查

任何幫助,將不勝感激!

回答

5

首先,這不是你應該做的事情。 NHibernate會盡量做到像髒檢查一樣正確。如果NHibernate認爲它很髒,那很可能是。試着找出你對實體做了哪些改變,導致NHibernate認爲它很髒,並通過調整這個來確定你是否可以解決你的問題。

這就是說,有一個解決方案。 NHibernate使用在插入和更新之前觸發的偵聽器。關於此的更多信息可在http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx,http://www.codinginstinct.com/2008/04/nhibernate-20-events-and-listeners.htmlmany other locations中找到。

事件偵聽器本身有一個返回值。這個返回值的作用是告訴NHibernate是否執行實際的插入/更新SQL查詢。當你返回false時,它執行它們。當您返回true時,它不會。這樣你可以抑制數據庫的實際持久性。

這種方法的好處是,在NHibernate方面,它認爲實體實際上是持久的,所以NHibernate的內部狀態保持正確,實體變得不髒。

+0

好吧我會檢查 – Hal 2010-10-28 07:44:05