8

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

4

1 回答 1

26

如果您不想使用身份密钥,您有多种选择。

选项 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);
    }
}
于 2013-02-12T10:20:05.623 回答