首先在代码中获取任意实体的主键值

Kor*_*ius 15 c# entity-framework-4.1

有这样的方法吗?

object GetPrimaryKeyValue(DbEntityEntry entry);
Run Code Online (Sandbox Code Playgroud)

或者应该如何实施?

dan*_*dan 30

您需要转换DbContextIObjectContextAdapter您可以访问底层ObjectContext,这样您就可以访问隐藏的一些更高级的功能DbContext.

在您的类中,派生DbContext以下方法将起作用.

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

如果有多个键,则应迭代该EntityKeyValues属性.

  • 只有当实体存在于`ObjectStateManager`中时才有效.有没有办法获得分离条目的实体键? (4认同)