标识规范设置为false

时间:2013-02-12 10:04:46

标签: entity-framework entity-framework-5

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

1 个答案:

答案 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);
    }
}