码迷,mamicode.com
首页 > 其他好文 > 详细

【转】在使用实体框架(Entity Framework)的应用中加入审计信息(Audit trail)跟踪数据的变动

时间:2018-05-27 23:46:27      阅读:399      评论:0      收藏:0      [点我收藏+]

标签:ati   ted   img   情况   修改   操作   ica   ORC   源代码下载   

 

在一些比较重要的业务系统中,通常会要求系统跟踪数据记录的变动情况。系统要记录什么时间,什么人,对那些信息进行了变动。

比较简单的实现方式是在每个表中加入两个字段CreatedBy和CreatedAt,见图1。CreatedBy用来存是谁进行了这次更改。CreatedAt用来存什么时间进行了这次更改。但是这种方式只能保存最后一次进行改动的人和时间。中间的改动历史都不能保留。改动前的值也不能保留。

技术分享图片

                          图 1

 

对于关键的信息系统,例如银行系统,电商系统,公安系统,我们需要保存数据完整的变动信息和历史。这通常包括进行变更的人,变更发生的时间,所有变更前的数据值,变更后的数据值。

在使用实体框架(Entity Framew)的应用中,可以很方便的实现加入审计信息(Audit trail)跟踪数据的变动的功能。我们在这里给大家做一个简要的介绍。

0. 前提是你使用的实体框架是 code-first.

1. 使用Nuget安装Tracker Enabled Dbcontext。如果你没有使用Microsoft.AspNet.Identity;你可以安装TrackerEnabledDbContext。如果你使用了Microsoft.AspNet.Identity;你需要安装TrackerEnabledDbContext.Identity. 见图2.

 

技术分享图片

 

                  图2

 

2. 修改你的DBcontext。如果你使用了Microsoft.AspNet.Identity。那么你的DBContext要继承TrackerIdentityContext<ApplicationUser>,否则你需要继承TrackerContext。见图3.

技术分享图片

                图 3

 

3. 修改你的数据层操作方法和业务层的方法。要增加userId的参数把userId的信息传递过来。见图4.修改context.SaveChanges();为context.SaveChanges(userId); userId为更改用户的Id信息。

技术分享图片

 

            图 4.

 

4. 更新数据库。运行Enable-Migrations -Force。再更新数据库运行 Update-Database。详细步骤,如果不是很清楚,可以自行网上查询。

更新完数据库后,你会发现里边增加了两个新表。一个是AuditLogs。另一个是AuditLogDetails。见 图5.

技术分享图片

    图 5.

5. 我们做一个员工维护的Demo来验证它的功能。在这个Demo中包括 “增加员工信息”和“更新员工信息”两个功能。见图6.

技术分享图片

 

              图 6.

新增加的员工是 10010。

更新的员工是1009。我们将他的employee code 从1006变成1009. Employee Name从周伯通1变成了周伯通。

 

6. 完成上述操作后。我们查看AuditLogs和AuditLogDetails表。里边已经增加了相关的变动信息。 见图7和图8.

  1) AuditLogs表

技术分享图片

          图 7

  2. AuditLogDetails表

技术分享图片

 

7. 源代码下载

  a) 源代码下载

  b) 数据库下载

 

转自:https://www.cnblogs.com/thinking-jiang/p/5610813.html

 

【转】在使用实体框架(Entity Framework)的应用中加入审计信息(Audit trail)跟踪数据的变动

标签:ati   ted   img   情况   修改   操作   ica   ORC   源代码下载   

原文地址:https://www.cnblogs.com/yunspider/p/9097869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!