标识规范设置为false(Identity specification set to false)

2019-07-19 17:58发布

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

Answer 1:

如果你不希望使用身份密钥,你有几种选择。

选择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);
    }
}


文章来源: Identity specification set to false