代码之家  ›  专栏  ›  技术社区  ›  Perpetualcoder

如何使用nlog/log4net自动跟踪数据库更改?

  •  0
  • Perpetualcoder  · 技术社区  · 16 年前

    我知道许多表审计方法。有些是基于触发器的,需要审核每个表上的触发器。有些基于列数据类型有限制。如何使用像nlog或log4net这样的日志框架。我想让我的日志(在表中)回答这样一个问题:“此时谁将此表的此列从val0更新为val1?”

    我还没有决定要一个或一个制图员。倾向于NHibernate或EF。

    事先谢谢!

    2 回复  |  直到 16 年前
        1
  •  2
  •   victor hugo    16 年前

    如果你使用像 DAO (我在Java中使用Hibernate成功地使用它),可以为数据库中的每个更改添加一个条目。如果你使用 Spring.NET 你可以使用 AOP 用于将拦截器添加到DAOS访问数据库的方法中。

    无论如何,您可能需要为DAOS包添加一个特殊的附加器,因为它非常冗长。

        2
  •  1
  •   John Farrell    16 年前

    胜利者的答案是一流的,但我想补充一点,这可能很难,这取决于列-对象映射的工作方式。

    如果您将表列映射到具有不同名称的对象属性和字段,那么我认为您将尝试分析SQL信息以确定更新了哪个列。例如,如果您更改了“product.price”的值,并且该值实际映射到一个名为“final-price”的列,那么您的日志记录将无法与数据库中发生的情况完全匹配。

    这也可能是错误的,但是如果您通过ORM包处理断开连接的实体,我不确定是否可以获得更改跟踪信息。我隐约记得我读到的一个问题,您列出的其中一个窗体更新了每一列,所以当用户真正更新一列时,似乎改变了表中的所有列。