NHibernateインターセプタを使用して、さまざまなエンティティに更新/挿入/削除に関する情報を記録しています。NHibernateインターセプタ監査挿入オブジェクトID
ログに記録される情報には、変更されたエンティティのエンティティタイプと一意のIDが含まれます。ユニークなIdは、NHibernateマッピングファイル内で<generator class="identity">
とマークされています。
明白な問題は、エンティティのIDがまだ割り当てられていないIInterceptor.OnSave()を使用して挿入操作をログに記録するときです。
監査情報を記録する前に、挿入されたエンティティのIDを取得するにはどうすればよいですか?
(私はNHibernateのリスナーPostSaveイベントに見てきたが、それらが使用されてSpring.net構成で作業を取得することはできませんので、私はすべての可能であればインターセプターに固執したいと思います)
コード:
// object id parameter is null...
public override bool OnSave(object entity, object id, object[] state,
string[] propertyNames, IType[] types)
{
AddAuditItem(entity, INSERT);
return false;
}
+1私はこの12ヶ月前に見ました! – MPritchard