0

我需要一个解决方案来记录和保存系统中的数据库用户操作,我需要记录用户、实体、实体的先前状态和当前状态以及用户进行更改的日期。我正在使用 NHibernate、Autofac 和 .net 4.0 c#。我想创建一个属性过滤器并放入需要生成日志的方法,但也有使用 Autofac 创建的拦截器,但仍然想不出最好的解决方案,我真的需要帮助,因为他们还没有实现任何东西喜欢

4

2 回答 2

2

Listeners你可以在 Nhibernate 中使用一些。它的工作方式类似于数据库中的触发器,但在 ORM 级别。例如,在PreUpdate方法上,您可以获取 ORM 正在更改的对象的旧状态和新状态并跟踪一些日志。如果您有用户登录您的 AppDomain,您可以从IPrincipal对象中获取此信息。您必须从接口继承,IPreUpdateEventListenerIPreInsertEventListener在类中实现这些接口的某些方法。之后,配置您SessionFactory以使用这些侦听器。你可以在这里看到很多听众。

看看这些链接:

http://darrell.mozingo.net/2009/08/31/auditing-with-nhibernate-listeners/

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

http://nhibernate.info/doc/howto/various/creating-an-audit-log-using-nhibernate-events.html

PS:当您设置监听器时,它将适用于每个实体,不要忘记检查您要添加此行为的类型。

于 2013-10-08T12:36:53.923 回答
2

要审核数据库更改,我可以推荐 NHibernate.Envers。我在以前的项目中使用过它,效果很好。

NHibernate.Envers

于 2013-10-08T12:46:01.897 回答