私の以前の質問How to implement LastUpdate in NHibernate Entities?からのフォロー。更新と保存のNHIbernateイベントリスナーを設定するには?
は、私は私のデータベースに私の監査済みのテーブル上に2つの列があります。
created datetime default getdate() not null
(この行の作成日)lastUpdate datetime null
(この行が最後に更新された日時)
NHibernate内で更新のみのリスナーを作成する場合は、をd atabaseエンジンはデフォルトの制約で新しいレコードを処理します。私はこのコードを使用したカスタムリスナーを作成しようとしました:
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