我有一个使用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 –