Entity Frameworkコアnull以外の主キーにNULL値を割り当てるコア

.net-core c# entity-framework entity-framework-core

質問

アップデート:私は問題を修正しました。私のケースでは、マイグレーションで解決策が見つからず、データベース管理者固有の解決策になりました。

この問題を解決するには、次のようにします。

Id = table.Column<long>(nullable: false)
  .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn)

私はEFがID生成を処理させようとしているテーブルを持っています。イドは長いです。

モデルは次のようになります。

public virtual long Id { get; set; }    
public virtual DateTime Created { get; set; }

移行は次のようになります。

migrationBuilder
    .CreateTable("MyEntity",
        table => new
        {
            Id = table.Column<long>(nullable: false),
            Created = table.Column<DateTime>(nullable: false)
        }

モデルのスナップショットは次のようになります。

modelBuilder.Entity("MyEntity", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd();
                    b.Property<DateTime>("Created");
                    b.HasKey("Id");
                }

新しいエンティティを作成し、Idを設定しない場合、Idのデフォルト値は0です。この値をdataContext.MyEntities.Add(newEntity)挿入してエンティティを検査すると、負の値が非常に大きくなりますlong.MaxValue)。問題は、 dataContext.SaveChanges(); EFはこの負の値をnullに変換してスローします。

スキーマ:

CREATE TABLE "MyEntity" (
    "Id" bigint NOT NULL,
    "Created" timestamp without time zone NOT NULL,
);

人気のある回答

試してください:

modelBuilder.Entity<MyEntity>().HasKey(e => e.Id).HasName("Id");

またはキーデコレータ(データ注釈)を追加する

[Key]
public virtual long Id { get; set; }

見る:

https://docs.microsoft.com/en-us/ef/core/modeling/relational/columns

https://msdn.microsoft.com/en-us/library/jj591583(v=vs.113).aspx



Related

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