How to add a Primary Key with fluent API - Entity Framework EF 4.x Code First

.net, code-first, database, entity-framework

Solution

You can use HasKey method.

builder.Entity<FooBar>().HasKey(...);

Problem

I need to map some auto generated classes, which I dont want to change for obviouse reasions (it's auto generated!). So is there a possibility to define a Primary Key with fluent API of the Entity Framework (4.3 in my case)? Handling Attributes as ComplexType leads to DbUpdateExcetion due to NULL values. Adding a Primary Key to the generated classes may be a solution, but not suitable for me, POCOs must stay unchanged. Pleas help! Thanks. Currently I am ignoring the Attributes because of the... ``` ModelValidationException EntityType 'Attribute' has no key defined. Define the key for this EntityType. EntitySet 'Attributes' is based on type 'Attribute' that has no keys defined. ``` here is a shortend sample code: ``` public class Item { public ID {set;get;} public Attribute[] Attributes {set;get;} } public class Attribute { public SomeComplexType misc1 {set; get;} public SomeComplexType misc2 {set; get;} } public class ItemDb : DbContext { public ItemDb(string connection) : base(connection) {} public DbSet<Item> Items { get; set; } protected override void OnModelCreating(DbModelBuilder builder) { // currently I am ignoring the Attributes builder.Ignore<Attributes>(); } } ```

Original source