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
?
Set identity_insert on to be able to explicitly set the value of the id column. Set it off again to auto-assign.
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);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With