我正在使用 NHibernate 拦截器将有关更新/插入/删除的信息记录到我的各种实体中。
记录的信息中包括实体类型和已修改实体的唯一 ID。<generator class="identity">
唯一 ID在 NHibernate 映射文件中标记为 a 。
明显的问题是当使用 IInterceptor.OnSave() 记录插入操作时,尚未分配实体的 ID。
如何在记录审计信息之前获取插入实体的 ID?
(我已经查看了 NHibernate Listeners 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;
}