gunnerz
gunnerz

Reputation: 1926

Entity Framework primary key name

I have created an entity model. I want to get the primary key name (i.e. property name) when I pass the entity name at runtime. Is it possible?

Upvotes: 1

Views: 1069

Answers (1)

Ladislav Mrnka
Ladislav Mrnka

Reputation: 364319

It is possible with entity type:

var objectSet = objectContext.CreateObjectSet<YourEntityType>();
var keyNames = objectSet.EntitySet.ElementType.KeyMembers.Select(k => k.Name);

or with entity type name:

var workspace = objectContext.MetadataWorkspace;
var entityType = workspace.GetItems<EntityType>(DataSpace.CSpace)
                          .FirstOrDefault(e => e.Name == yourEntityTypeName);
var keyNames = entityType.KeyMembers.Select(k => k.Name);

Upvotes: 1

Related Questions