如何实现对象的审计跟踪(编程)?

9 c# audit logging object

我需要在我的对象上实现添加/编辑/删除的审计跟踪,我正在使用ORM(XPO)来定义我的对象等.我实现了一个触发的审计跟踪对象

  1. OnSaving
  2. OnDeleting

在基础对象中,我将更改存储在Audit-AuditTrail(Mast-Det)表中,以进行字段更改.使用一些称为的方法服务.

如何在OOP代码中实现审计跟踪?请分享您的见解?任何模式等?最佳做法等?另一件事是如何在运行单元测试时禁用审计,因为我不需要审计它们,但是因为基础对象具有代码.

对象(编辑/添加/ del)的更改以及需要审核的字段更改

lot*_*ime 7

如果可以的话,数据库触发器是首选的方法.

但是,最近我不得不在客户端代码中执行此操作,最后编写了一个类,该对象在打开进行编辑时创建了对象的深(值)副本,在保存时比较了两个对象(使用ToString()只有)并将任何更改写入审计表.

编辑:我在每个属性上都有一个[Audit]属性,我想考虑审计并使用反射来查找它们,使得该方法对于被审计的对象不具体.

  • 我已经投了这个答案,但在使用数据库触发器时要注意的一件事是交易括号.有时,即使发生错误并回滚事务,您也希望审核事件. (2认同)

Gal*_*ian 0

我知道这并不能回答您的问题,但为了记录,我更喜欢在数据库中处理这种类型的审核逻辑。