2009-05-22 24 views
1

在將更新保留到我的業務實體之前,我需要執行驗證檢查以確定哪些屬性已更改。例如,某些字段只能在「狀態」屬性具有特定值時更新。例如。當訂單實體具有最終確定狀態時,只能更新註釋(字符串)字段。這種事情可能使用NHibernate,或者我應該在商業實體中跟蹤自己的變化嗎?使用NHibernate確定在更新之前哪些字段已經更新(用於驗證)

+0

由於我需要更多的代表評論,你可以發佈你的代碼?我的'OldState'數組總是空的... – Lodewijk 2011-02-08 02:33:57

回答

2

如果我明白你想要做什麼,Gabriel的解決方案並不完全符合你的需求。如果不是,您可以嘗試event listener。這些允許你鉤入一個普通的事件(比如保存)並在NHibernate完成保存/插入/更新/刪除之前做一些處理。另外,你可以通過實現IInterceptor接口來研究使用攔截器。

+0

我設法使用我自己的IPreUpdateEventListener的自定義實現。 OnPreUpdate()方法包含一個PreUpdateEvent類型的參數,其中包含舊狀態和新狀態。可以將這些進行比較,以確定哪些屬性發生了變化。源代碼可根據要求提供 – teevus 2009-06-23 02:47:09

0

這種事情確實是可能的。編碼本能有一個偉大的職位introducing NHibernate.Validator

+0

感謝您的回答。我更關心跟蹤哪些字段已被修改,並針對這些字段應用驗證規則。在面值NHibernate.Validator似乎沒有提供任何支持(糾正我,如果我錯了) – teevus 2009-06-02 07:02:08

相關問題