我正在使用NHibernate拦截器记录有关各种实体的更新/插入/删除信息。
记录的信息包括实体类型和修改的实体的唯一标识符。在NHibernate映射文件中,唯一标识符被标记为。
明显的问题是,在使用IInterceptor.OnSave()记录插入操作时,实体的ID尚未分配。
如何在记录审核信息之前获取已插入实体的ID?
(我已经研究了NHibernate监听器PostSave事件,但无法与使用的Spring.net配置一起使用,因此如果可能的话,我想坚持使用拦截器)
代码:
记录的信息包括实体类型和修改的实体的唯一标识符。在NHibernate映射文件中,唯一标识符被标记为。
明显的问题是,在使用IInterceptor.OnSave()记录插入操作时,实体的ID尚未分配。
如何在记录审核信息之前获取已插入实体的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;
}