跟踪更改对象更改

时间:2011-11-19 23:30:53

标签: asp.net-mvc-3 entity-framework nlog

我希望能够以最简单的方式了解用户在进行CRUD活动时所做的更改。我正在开发一个系统,用户对权限不太感兴趣,但我真的希望得到一个用户所做更改的复杂日志。我正在使用ASP.NET MVC 3,EF和NLog。

非常感谢任何建议:)

史蒂夫

1 个答案:

答案 0 :(得分:2)

我使用基于约定的方法。每个实体都有一个关联的审计实体,其中包括来自基础实体的所有属性以及有关更改的信息,包括它是否成功。我重写了DB上下文中的SaveChanges方法。对于每个被更改的实体,它会从中创建一个包含新值的审计实体。它尝试保存更改,然后使用单独的审计上下文来保存每个审计实体以及保存操作的结果。在构造审计实体时,我在数据上下文中使用注入的实用程序来访问当前用户(通过HttpContext.Current for web,通过Environment.User for non-web)。

我在http://farm-fresh-code.blogspot.com/2009/05/auditing-inserts-and-updates-using-linq.html上为LINQ to SQL撰写了早期版本的博客。你应该能够从中得到基本的想法。