使用ObjectContext获取关系记录的主键
本文关键字:记录 关系 ObjectContext 获取 使用 | 更新日期: 2023-09-27 18:26:57
我尝试使用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;
}
有人知道,如果我走错了路,是否有可能获得相关实体的主键?
谢谢!
我认为您会得到0(这是默认值(int)),因为只有在保存完成后(即dbContext.SaveChanges
已成功完成)才会填充自动递增的(标识)列。试着像这里建议的那样读取SaveChanges()
之后的值。
这看起来像是一种捕捉新添加值的方法,您必须覆盖SaveChanges并像这里提到的那样自己获取生成的值。