Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Identity specification set to false

I am using EF5 and Code First to create database. When Entity has Id field, EF create such field as Primary Key in database and set Identity specification to true(auto generated value). How to set Identity specification to false by default?

like image 998
Tomas Avatar asked Feb 12 '13 10:02

Tomas


People also ask

How do I temporarily disable identity column in SQL Server?

Set identity_insert on to be able to explicitly set the value of the id column. Set it off again to auto-assign.


1 Answers

If you don't want to use identity keys you have several options.

Option 1: You can globally turn off this feature by removing StoreGeneratedIdentityKeyConvention:

public class YourContext : DbContext {
    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Conventions.Remove<StoreGeneratedIdentityKeyConvention>();
    }
}

You can selectively select keys and change the behavior for them by either applying attribute or fluent mapping.

Option 2: Attribute:

public class MyEntity {
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }        
}

Option 3: Fluent API:

public class YourContext : DbContext {
    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Entity<MyEntity>()
                    .Property(e => e.Id)
                    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    }
}
like image 112
Ladislav Mrnka Avatar answered Dec 28 '22 07:12

Ladislav Mrnka