為什麼我的EF Core遷移會忽略模型的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);
}

然而,當我生成第一個遷移時,會創建另外兩個表,它會為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);
});

GenderId在哪裡得到SetNull ,在一個不可為空的列, GenderIdCascade可能是默認設置,忽略了我的配置。

一般承認的答案

正如@bricelam所說,我提交了一個問題,並在不到24小時內得到了正確答复。微軟的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合法嗎? 是的,了解原因