使用ObjectContext获取关系记录的主键

时间:2015-12-15 16:26:28

标签: c# .net entity-framework audit

我尝试使用EF的ChangeTracker进行审核并保存数据库中的所有更改(添加+更新)。

因此,使用ChangeTracker,我将能够获得所有更改的表,以及每个表的所有值。但我还需要新表中新记录的ID。

其中一些是关系,当我尝试使用EntityKey获取值时,主键为0

private object GetPrimaryKeyValue(DbEntityEntry entry)
{
    var objectStateEntry = ((IObjectContextAdapter)this).ObjectContext.ObjectStateManager.GetObjectStateEntry(entry.Entity);
    return objectStateEntry.EntityKey.EntityKeyValues[0].Value;    
}

有人知道,如果我走错路,是否可以获得相关实体的主键?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你得到0(即默认值(int)),因为只有在保存完成后才会填充自动增量(标识)列(即dbContext.SaveChanges已成功完成)。尝试阅读SaveChanges()之后的值,如建议的here

它看起来像是一种捕获新添加值的方法,您必须覆盖SaveChanges并自己获取生成的值,如提到的here