我正在使用EF5
和Code First
来创建数据库。当实体具有Id field
时,EF会在数据库中创建Primary Key
这样的字段,并将Identity specification
设置为true
(自动生成的值)。如何设置Identity specification to false by default
?
答案 0 :(得分:25)
如果您不想使用身份密钥,您可以选择多种方式。
选项1 :您可以通过删除StoreGeneratedIdentityKeyConvention
全局关闭此功能:
public class YourContext : DbContext {
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Conventions.Remove<StoreGeneratedIdentityKeyConvention>();
}
}
您可以通过应用属性或流畅的映射来有选择地选择键并更改它们的行为。
选项2:属性:
public class MyEntity {
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
}
选项3: Fluent API:
public class YourContext : DbContext {
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<MyEntity>()
.Property(e => e.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}
}