1. 程式人生 > >【轉】在使用實體框架(Entity Framework)的應用中加入審計信息(Audit trail)跟蹤數據的變動

【轉】在使用實體框架(Entity Framework)的應用中加入審計信息(Audit trail)跟蹤數據的變動

要求 date ted hang ng- tar () eat code

在一些比較重要的業務系統中,通常會要求系統跟蹤數據記錄的變動情況。系統要記錄什麽時間,什麽人,對那些信息進行了變動。

比較簡單的實現方式是在每個表中加入兩個字段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)跟蹤數據的變動