刪除EF Core 1.0 RC2中的自動增量(以前的EF 7 RC2)

c# ef-fluent-api entity-framework-core sqlite

在Entity Framework Core 1.0 RC2(以前的Entity Framework 7 RC2)中,默認情況下,所有整數主鍵都是自動增量字段。我嘗試了一切來刪除它。從使用數據註釋到流暢的API,沒有任何作用。

使用數據註釋:

[Key, Column(Order = 1, TypeName = "INT"), DatabaseGenerated(DatabaseGeneratedOption.None)]

使用流暢的API:

modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId).HasAnnotation("DatabaseGenerated", DatabaseGeneratedOption.None);

//OR use the following
modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId).HasAnnotation("DatabaseGenerated", 0);

//OR use the following
modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId).HasAnnotation("Sqlite:Autoincrement", false);

沒有任何工作:(

你能幫我麼?

更新

正如請求的那樣,這是運行add-migration LocalDB_v1後得到的表腳本

migrationBuilder.CreateTable(
            name: "tblProduct",
            columns: table => new
            {
                ProdId = table.Column<int>(nullable: false)
                    .Annotation("Sqlite:Autoincrement", true),
                Name = table.Column<string>(nullable: true),
                Description = table.Column<string>(nullable: true)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_tblProduct", x => x.ProdId);
            });
...
...
...

一般承認的答案

在EF Core中, 密鑰和屬性是單獨配置的

要指定密鑰:

modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId);

要配置屬性不是自動增量:

modelBuilder.Entity<tblProduct>().Property(t => t.ProdId).ValueGeneratedNever();

熱門答案

我沒有使用EF 7,但很少有人檢查

  • 更改模型後,您需要更新數據庫,遷移或手動更新
  • 如果您現在在字段上有自動增量,請檢入數據庫


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow