首页 > 解决方案 > 如何设置 EF Core 以在一对一关系上级联删除?

问题描述

我正在尝试让级联删除在 EF Core 5 中为一对一关系工作。当我删除 ParentTable 实体时,我希望也从数据库中删除关联的 ChildTable 实体。

数据库是这样设置的:

父表

子表

并以这种方式在 EF Core 中为父实体配置它:

            builder.HasOne(o => o.ChildTable)
                .WithOne()
                .HasForeignKey<ParentTable>("ChildId")
                .OnDelete(DeleteBehavior.Cascade);

当我从上下文中删除 ParentTable 实体时,它不会同时删除 ChildTable。我一定错过了什么,但我不知道那是什么。

任何帮助表示赞赏。谢谢你。

标签: entity-frameworkone-to-onecascading-deletes

解决方案


在编写时HasForeignKey<ParentTable>("ChildId"),您指定 为依赖实体。因此,实体之间的关系已经与您想要的相反。尝试将其切换为类似于:

builder.HasOne(x => x.ChildTable).WithOne().HasForeignKey<ChildTable>(x => x.ForeignKey).OnDelete(DeleteBehavior.Casacade)

如果您想要有关该主题的 Microsoft 文档,请查看此链接:https ://docs.microsoft.com/en-us/ef/core/modeling/relationships?tabs=fluent-api%2Cfluent-api-simple-key% 2C简单键#一对一


推荐阅读