使用事件侦听器进行NHibernate审计 - 如何在IPreUpdateEventListener.OnPreUpdate中创建历史记录对象

时间:2012-09-04 17:08:03

标签: nhibernate

我正在利用好文章:

http://ayende.com/blog/3987/nhibernate-ipreupdateeventlistener-ipreinserteventlistener

并且已经实现了 OnPreInsert ,就像在示例中一样。但是,更新实体时的审计要求是在数据库中创建“历史”条目。让我们说:

  • 我获取Person对象
  • 我修改了

    personObj.FirstName = Console.ReadLine();

  • 然后我保存了实体。现在,在 IPreUpdateEventListener.OnPreUpdate 中,我想更改 UpdatedAt &实体&的 UpdatedBy 属性状态(就像在文章中一样),我也需要将新记录添加到包含旧值的数据库(更改前的 FirstName )。

我看到 PreUpdateEvent 包含 OldState 数组,但是我不知道如何在 OldState 中创建 Person 对象数组并保存。

我如何实现我的需要?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

但是我不知道如何从OldState数组创建Person对象并保存它。

你看过NHibernate Envers了吗?就是这样。

如果您出于某种原因不想使用此框架,请查看其源代码。