我使用Entity Framework 6.2.0连接到数据库优先dll,我试图在运行时获取给定实体的主键。直到运行时我才知道实体类型,这就是我尝试使用反射获取主键的原因。
使用以下内容,我收到错误无法找到EntityType' System.Type':
的映射和元数据信息 private string GetPrimaryKey<T>(T entity) where T : class
{
Context.DefaultContainerName = EFContainerName;
var ESet = Context.CreateObjectSet<T>().EntitySet;
return ESet.ElementType.KeyMembers.Select(k => k.Name).ToArray().First();
}
我已经看到很多有关映射和元数据错误的信息,但没有看到System.Type,因此我觉得它可能不是映射错误,而是我使用的方式更多通用类型参数?
答案 0 :(得分:0)
像这样创建抽象类
public abstract class EntityObject
{
public abstract Guid EntityKey { get; }
}
从实体对象继承此类
public class Model: EntityObject
{
public Guid Id { get; set; }
public override Guid EntityKey => Id;
}
供使用;
var primaryKey = (Model as EntityObject)?.EntityKey;