c#中业务对象的通用历史管理

本文关键字:历史 管理 业务 对象 | 更新日期: 2023-09-27 18:09:48

我想在我的Web API应用程序中实现这样的东西:

  • 每个修改数据的事务都应该被"记录"
  • 日志应该在业务层完成,可以存储在当前存储数据的常规SQL数据库中,也可以存储在某种NoSQL数据库中。日志文件中的每个事务基本上存储了谁执行了事务,何时,什么事务以及旧/新数据。
  • 可以用来查看对象的更改历史,并且可以帮助实现撤消/回滚。

我的问题是:

  • 它是否作为一个库/框架存在于某个地方?
  • 这个有名字吗?
  • 有什么明显的缺陷我错过了吗?

问候,丹尼尔

c#中业务对象的通用历史管理

如果您正在使用DbContext,在这种情况下,您可以重写SaveChanges方法。这样的:

public override int SaveChanges()
{    
    foreach (var entityState in ChangeTracker.Entries())
    {
        // loggin here
    }
    return base.SaveChanges();
}

或者你可以使用EFTracingProvider