2013-02-12 76 views
7

我使用EF5Code First来创建数据库。当实体有Id field时,EF在数据库中创建Primary Key这样的字段,并将设置为true(自动生成的值)。如何设置Identity specification to false by default标识规范设置为false

回答

19

如果你不想使用身份密钥,你有几个选项。

选项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:流利API:

public class YourContext : DbContext { 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
     modelBuilder.Entity<MyEntity>() 
        .Property(e => e.Id) 
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
    } 
}