Hans
Hans

Reputation: 41

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

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>();
    }
}

Upvotes: 4

Views: 6704

Answers (1)

cincura.net
cincura.net

Reputation: 4150

You can use HasKey method.

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

Upvotes: 6

Related Questions