繼我上一個問題How to implement LastUpdate in NHibernate Entities?。如何爲更新和保存配置NHIbernate事件偵聽器?
我有我的審計表兩列在我的數據庫:
created datetime default getdate() not null
(該行的創建日期)lastUpdate datetime null
(日期時間此行的最後更新)
我想創建一個監聽器更新只有在NHibernate,因爲d數據庫引擎會使用默認約束來處理新記錄。我試圖創建一個自定義監聽器使用此代碼:
public class CustomUpdateEventListener : DefaultSaveOrUpdateEventListener
{
protected override object PerformSaveOrUpdate(SaveOrUpdateEvent evt)
{
var entity = evt.Entity as IAuditableEntity;
if (entity != null)
{
ProcessEntityBeforeUpdate(entity);
}
return base.PerformSaveOrUpdate(evt);
}
internal virtual void ProcessEntityBeforeUpdate(IAuditableEntity entity)
{
entity.UpdateDate = DateTime.Now;
}
}
,它更新的偉大工程,但它也獲取Save
事件運行(當我新行添加到數據庫中)。我不希望它爲新的行開火。我試圖改變代碼來聽取Update
事件,但我無法解決這個問題。
我試圖改變類從DefaultUpdateEventListener
繼承,但有沒有UpdateEvent
(僅SaveOrUpdate
事件或PreUpdate
或PostUpdate
)
我想知道如果我應該使用PreUpdate
事件,使我的聽衆從DefaultUpdateEventListener
繼承,但那麼我不確定我需要重寫哪個方法。沒有Update
方法可以覆蓋。
被覆蓋的PerformUpdate事件我知道這是一個老的文章,但你有沒有遇到過這篇博文? http://ayende.com/blog/3987/nhibernate-ipreupdateeventlistener-ipreinserteventlistener – Rippo 2012-12-02 08:23:31