删除EF Core 1.0 RC2中的自动增量(以前的EF 7 RC2)
在Entity Framework Core 1.0 RC2(以前的Entity Framework 7 RC2)中,默认情况下,所有整数主键都是自动增量字段。 我尝试了一切来删除它。 从使用数据注释到流畅的API,没有任何作用。
使用数据注释:
[Key, Column(Order = 1, TypeName = "INT"), DatabaseGenerated(DatabaseGeneratedOption.None)]
使用流畅的API:
modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation("DatabaseGenerated", DatabaseGeneratedOption.None); //OR use the following modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation("DatabaseGenerated", 0); //OR use the following modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation("Sqlite:Autoincrement", false);
没有任何工作:(
你能帮我么?
更新
正如请求的那样,这是运行add-migration LocalDB_v1后得到的表脚本
migrationBuilder.CreateTable( name: "tblProduct", columns: table => new { ProdId = table.Column(nullable: false) .Annotation("Sqlite:Autoincrement", true), Name = table.Column(nullable: true), Description = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_tblProduct", x => x.ProdId); }); ... ... ...
在EF Core中, 密钥和属性是单独配置的 。
要指定密钥:
modelBuilder.Entity().HasKey(t => t.ProdId);
要配置属性不是自动增量:
modelBuilder.Entity().Property(t => t.ProdId).ValueGeneratedNever();
我没有使用EF 7,但很少有人检查
- 更改模型后,您需要更新数据库,迁移或手动更新
- 如果您现在在字段上有自动增量,请检入数据库