我正在使用NHibernate拦截器来记录关于更新/插入/删除到我的各种实体的信息。NHibernate Interceptor审计插入对象Id
包含在记录的信息中的是实体类型和修改实体的唯一ID。 NHibernate映射文件中唯一标识为<generator class="identity">
。
显而易见的问题是,使用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;
}
感谢您的答复。 我试过PostFlush,但我怎么知道ICollection实体参数中的哪些项目是刚插入的项目?如果有一种方法来识别这个,它会工作正常... – TonE 2009-05-21 10:46:44
我相信所有这些......是不是这种情况? – 2009-05-21 11:01:12