2011-11-19 117 views
0

我想獲得您的最簡單方法來追蹤用戶在執行CRUD事件時所做的更改。我正在研究一個系統,在這個系統中用戶對權限的興趣不大,但真的想要有一個用戶所做更改的複雜日誌。我正在使用ASP.NET MVC 3,EF和NLog。跟蹤更改對象更改

任何意見非常讚賞:)

史蒂夫

+1

檢出[使用MVC和實體框架實現審計日誌/更改歷史記錄](http://stackoverflow.com/questions/6867459/implementing-audit-log-change-history-with-mvc-entity-framework/6867622 #6867622) – Eranga

回答

2

我用一個慣例爲基礎的方法。每個實體都有一個關聯的審計實體,其中包括來自基礎實體的所有屬性以及有關更改的信息,包括其是否成功。我重寫了數據庫上下文的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的早期版本的博客。你應該能夠從中得到基本的想法。

+0

謝謝你tvanfosson!我會看看它。你知道自我跟蹤實體的任何事嗎?這可以用於審計和跟蹤目的嗎? – SteveB