gpt4 book ai didi

entity-framework - 为什么我的 EF Core 迁移会忽略模型的 OnDelete 设置?

转载 作者:行者123 更新时间:2023-12-04 07:26:06 25 4
gpt4 key购买 nike

我在尝试配置外键的 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 上,它在哪里获取 SetNullCascade 可能是默认设置,忽略了我的配置。

最佳答案

正如@bricelam 所建议的,我提交了一个问题并在不到 24 小时内得到了正确的回复。 Microsoft 的 Smit Patel 建议:

In your project.json you have reference to Microsoft.EntityFrameworkCore.Commands which was deprecated a while ago and should be removed.

我删除了它,重新生成的迁移现在具有两个 FK 的正确 onDelete 值。

关于entity-framework - 为什么我的 EF Core 迁移会忽略模型的 OnDelete 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39818239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com