我有一个通过Type对象和ObjectContext的实体类型。从那些,我如何获得关键属性名称(而不是他们的值)?
答案 0 :(得分:1)
你可以试试这个:
var objectSet = context.CreateObjectSet<TEntity>();
// Get entity set for current entity type
var entitySet = objectSet.EntitySet;
// Get names of the entity's key properties
var keyNames = entitySet.ElementType.KeyMembers.Select(e => e.Name).ToList();
Here是一个示例,如何使用它来创建按键加载实体的通用方法(该示例仅使用具有单个键的实体,但可以扩展)。
答案 1 :(得分:0)
此外,以下作品虽然比拉迪斯拉夫的答案更有讽刺意味,但有利于任何类型的工作而无需额外的反思工作:
using System.Data.Metadata.Edm;
...
IEnumerable<string> keyNames = objectContext.MetadataWorkspace
.GetItems<EntityType>(DataSpace.OSpace)
.Single(edmType => edmType.FullName == type.FullName)
.KeyMembers
.Select(e => e.Name)