私のEFコアマイグレーションがモデルのOnDelete設定を無視するのはなぜですか?

.net-core entity-framework entity-framework-core

質問

私は、外来キーのOnDelete動作を設定する無駄な試みのように見える、次のコードを持っています:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<Contact>()
        .HasOne(e => e.Gender)
        .WithMany()
        .HasForeignKey(e => e.GenderId)
        .OnDelete(DeleteBehavior.Restrict);

    modelBuilder.Entity<Contact>()
        .HasOne(e => e.Title)
        .WithMany()
        .HasForeignKey(e => e.TitleId)
        .OnDelete(DeleteBehavior.Restrict);
}

それでも、最初と最後の2つのテーブルが作成されると、次のようにContact制約が作成されます。

constraints: table =>
{
    table.PrimaryKey("PK_Contact", x => x.Id);
    table.ForeignKey(
        name: "FK_Contact_Gender_GenderId",
        column: x => x.GenderId,
        principalTable: "Gender",
        principalColumn: "Id",
        onDelete: ReferentialAction.SetNull);
    table.ForeignKey(
        name: "FK_Contact_Title_TitleId",
        column: x => x.TitleId,
        principalTable: "Title",
        principalColumn: "Id",
        onDelete: ReferentialAction.Cascade);
});

ブレイズがSetNull取得SetNull 、ヌル値ではない列のGenderIdCascadeは私の設定を無視して、おそらくデフォルトです。

受け入れられた回答

@bricelamの提案によれば、私は問題を提出し、24時間以内に正しい応答を得ました。 MicrosoftのSmit Patelはアドバイスしました:

あなたのproject.jsonでは、しばらく前に廃止されたMicrosoft.EntityFrameworkCore.Commandsへの参照があり、削除する必要があります。

私はそれを削除し、再生成された移行では、両方のFKに対して正しいonDelete値を持つようになりました。



Related

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