标识规范设置为false

Tom*_*mas 8 entity-framework entity-framework-5

我正在使用EF5Code First创建数据库.当Entity具有时Id field,EF Primary Key在数据库中创建这样的字段并设置Identity specificationtrue(自动生成的值).怎么设置Identity specification to false by default

Lad*_*nka 25

如果您不想使用身份密钥,则可以使用多种选项.

选项1: 您可以通过删除StoreGeneratedIdentityKeyConvention以下全局关闭此功能:

public class YourContext : DbContext {
    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Conventions.Remove<StoreGeneratedIdentityKeyConvention>();
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以通过应用属性或流畅映射来有选择地选择键并更改它们的行为.

选项2: 属性:

public class MyEntity {
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }        
}
Run Code Online (Sandbox Code Playgroud)

选项3: Fluent API:

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