我有一個使用EF4的Web應用程序。我有點新的EF和現在正在努力實施變革Audit.I試圖通過捕獲上下文類的SavingChanges事件如下實體框架4更改審計
partial void OnContextCreated()
{
this.SavingChanges += new EventHandler(TicketContainer_SavingChanges);
}
因此事件處理程序可通過以下
訪問已變更記錄要做到這一點this.ObjectStateManager.GetObjectStateEntries(
EntityState.Added | EntityState.Modified);
這工作正常,我正在創建所選表的列級審計。每個表/實體都有一個ID字段,它是具有columnName =「ID」的標識符。因此,在我的審計例程中,我只是通過名稱爲「Id」的列訪問數據以獲取審計記錄的ID。
我面臨的問題是在插入過程中。新記錄沒有ID,因爲它是數據庫中的標識列,並且始終爲0.
我能想到的一種解決方案是對所有Ids使用GUID.But是否有一種方法可以使用標準的int32標識IDS?
感謝
嗨Wouter感謝您的答覆。我沒有完全理解你的建議。但可能你正在創建一個Fkey從審計表到你的實際表,因爲你有1審計表每個實體。但在我的情況下,我只有一個跨所有實體的單一審計表 – josephj1989
爲什麼您僅限於一個表?如果使用TablePerHierarchy繼承,則仍然可以將整個繼承層次結構放在表上。例如,您將具有帶有TargetPerson屬性和TargetPersonId(FK)的PersonAudit類型以及具有屬性TargetOrder和TargetOrderId的OrderAudit –