2011-03-03 160 views
2

實施數據庫修改的最佳做法是什麼?實施數據庫修訂的最佳實踐是什麼?

假設我有一個名爲Test的表,另一個名爲Test_Rev的修訂表。

假設我將跟蹤Test的記錄更改到Test_Rev表中。

保存之前,我得到更改的實體,以便我可以修改需要修訂的表。

我已經做了一個單獨的線程使用生產者 - 消費者模式,然後將我需要修改的實體傳遞給該線程。

使用訪問者模式,我擴展了我的類的行爲,以便我可以修改它們。

它運作良好,但我需要知道的最佳做法。

一位朋友告訴我將修改作爲我需要修改的表格上的觸發器。

順便說一句,我使用VS 2010,SQL Server 2005中,實體框架

+0

數據庫修改或數據庫版本控制? – 2011-03-03 15:04:09

+0

數據庫修訂,我需要跟蹤記錄更改 – Hassan 2011-03-03 15:19:12

回答

1

這取決於如果你是幸福的數據庫邏輯。如果您沒有問題,請使用數據庫觸發器。如果您希望在應用程序中覆蓋SaveChanges中的邏輯,並且在執行base.SaveChanges之前運行您的修訂(添加修訂實體)。唯一的問題可能是使用自動生成的密鑰「審覈」新添加的實體 - 只有在調用base.SaveChanges之後才能知道該密鑰。因此,在這種情況下,您必須在保存更改後審覈添加的實體,並再次致電base.SaveChanges

我不認爲有任何理由有單獨的線程 - 此外ObjectContext是不是線程安全的。

1

在數據庫中,這叫做審計,最常用觸發器來完成。在任何情況下都不要在應用程序中執行此操作,否則您將錯過更改,唯一適當的位置是在數據庫中。

+0

我不同意這一點。您也可以使用事件來使用NHibernate等ORM進行審計。 – cdmckay 2013-06-10 05:29:46