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);

何も働いていない:(

手伝ってくれませんか?

更新しました

要求通りに、ここでは、 追加の移行を実行した後に取得するテーブルスクリプト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コアでは、 キーとプロパティが別々に設定されます。

キーを指定するには:

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
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ