如何确定类型的关键属性在ObjectContext中是什么?

时间:2011-04-14 15:26:56

标签: .net entity-framework

我有一个通过Type对象和ObjectContext的实体类型。从那些,我如何获得关键属性名称(而不是他们的值)?

2 个答案:

答案 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)