【问题标题】:Logging Data Base changes using Entity Framework and ELMAH (or else)使用实体框架和 ELMAH(或其他)记录数据库更改
【发布时间】:2012-04-03 20:35:34
【问题描述】:

我们的客户要求在 db 中记录更改的功能。 我们需要下一个结构:

"Timestamp", "User", "DB.Table.Field changed", "Value after change"

我们有什么:

  • 实体框架代码优先
  • ELMAH
  • 具有 100 多个表的 MySQL 数据库(应跟踪所有表的更改)

所以我们需要:

  • 以某种方式跟踪更改了哪些表
  • 添加/更新了哪些新值
  • 通用功能(如果可能)

任何想法如何做到这一点?

附言。 ELMAH 不是严格的要求。但是MySql是:)

谢谢!

【问题讨论】:

  • 不能使用数据库触发器吗?
  • 这里的问题是跟踪更改值的用户...
  • 我的想法是写存储过程。但我不知道如何通用获取已更改的表和值

标签: c# asp.net-mvc ef-code-first elmah


【解决方案1】:

最终,您要寻找的是某种跟踪审计的行为。 ELMAH 不适合这种情况。

您很可能希望查看某种多态对象,该对象可以跟踪谁对已知实体执行了何种类型的操作。您很可能想要使用某种 AOP 概念。像DynamicProxy2LinFu 这样的库应该在这方面有所帮助。

您的目标是使用包装现有实体的代理对象并“注入”您需要跟踪的审计信息。

【讨论】:

    【解决方案2】:

    我实际上有相同的功能请求,尽管我之前为我的通用存储库编写了一个跟踪层,但我发现 Nuget/Github 中有一个可以处理这个问题。

    https://www.nuget.org/packages/TrackerEnabledDbContext/

    https://github.com/bilal-fazlani/tracker-enabled-dbcontext

    您可以使用它,我发现它对我很有用。我将它用于我的通用存储库项目中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多