NHibernate事件监听器审计

时间:2013-07-17 05:27:54

标签: asp.net-mvc nhibernate event-listener

我正在开展一个需要审计跟踪的小项目。

我已经连接到IPostUpdateEventListener并且具有适用于简单对象的基本审计跟踪。

public class Foo 
{
      public virtual int Id { get; set; }
      public virtual string PropName { get; set; }
      public virtual ISet<Boo> Boos { get; set; }
}

public class Boo
{
      public virtual int Id { get; set; }
      public virtual string PropName { get; set; }
      public virtual Foo Foo { get; set; }
}

当我想在相关的Foo对象中更改Boo加载的外键并执行SaveOrUpdate时 - 这适用于审计跟踪。

当我获得事件监听器时,我检查脏值,唯一的脏属性将是Foo对象,但问题是Foo中的ISet Boos未启动。所以会抛出一个访问延迟加载的属性的错误。

如果我更改了除实体之外的其他属性,它可以正常工作,我似乎无法为另一个对象的属性执行此操作。

有更好的方法来更新Boo的父级吗?

因为我想在审计跟踪中显示已更改的Foo ID以显示外键已更改。

干杯

1 个答案:

答案 0 :(得分:1)

您可以使用Envers!我们成功地使用它。