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
?
Asked
Active
Viewed 1.1k times
10

Tomas
- 17,551
- 43
- 152
- 257
1 Answers
27
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);
}
}

Community
- 1
- 1

Ladislav Mrnka
- 360,892
- 59
- 660
- 670