2011-06-12 15 views
1

我是nhibernate的新手。我正在開發一個小型的c#應用程序,使用存儲庫模式。在我的倉庫中,我實現了一個簡單的鉤子來檢測實體何時被保存。 我調用實體的事件處理程序來執行實體可能需要的任何操作。nhibernate SaveOrUpdate - 輕鬆確定將執行哪些操作

我的問題是,我也使用SaveOrUpdate方法。由於我只需要在保存操作時調用事件處理程序,因此我無法區分SaveOrUpdate調用中的保存或更新。

因此,簡而言之,是否有任何簡單的方法來確定將要執行的操作 - 它會是保存還是更新?

回答

6

如果實體的ID未設置,nHibernate將調用Save方法,否則將調用Update方法。

看吧:

SaveOrUpdate Vs Update and Save in NHibernate

「saveOrUpdate()方法着眼於標識符,並且決定什麼是在上面的必要。」

+0

我明白了,以及是否有任何方法可以檢測級聯保存並在完成後執行操作? – vondip 2011-06-13 02:58:40

+1

我想你可以嘗試尋找Interceptor類。攔截器允許你控制基本的NHibernate方法覆蓋OnSave,OnFlushDirty等等。 http://elegantcode.com/2008/05/15/implementing-nhibernate-interceptors/ http://knol.google.com/k/fabio-maulo/nhibernate-chapter-11-interceptors-and/1nr4enxv3dpeq/14# – danyolgiax 2011-06-13 07:02:52

相關問題