【发布时间】:2015-08-21 17:24:04
【问题描述】:
我们目前正在使用下面的方法,它依赖于抽象存储库中的 IObjectContextAdapter。从我正在阅读的内容来看,与 ObjectContext 相关的任何内容似乎都已从 Entity Framework Core 中删除。下面的方法是我们唯一依赖与 ObjectContext 相关的任何东西的地方。
我们想升级到 Entity Framework Core。这是我们唯一的路障。有没有办法通过Entity Framework Core api获取实体的主键值?
// Entity Framework
public virtual int GetKey(T entity)
{
var oContext = ((IObjectContextAdapter)_DbContext).ObjectContext;
var oSet = oContext.CreateObjectSet<T>();
var keyName = oSet.EntitySet.ElementType
.KeyMembers
.Select(k => k.Name)
.Single();
return (int)entity.GetType().GetProperty(keyName).GetValue(entity, null);
}
【问题讨论】:
-
var entry = _dbContext.Entry(entity); entry.Metadata.FindPrimaryKey().Properties.Select(p => entry.Property(p.Name).CurrentValue);
标签: entity-framework primary-key repository-pattern entity-framework-core