如何解决如何设置 EF Core 以在一对一关系上级联删除?
我正在尝试在 EF Core 5 中为一对一关系使用级联删除。当我删除 ParentTable 实体时,我希望也从数据库中删除关联的 ChildTable 实体。
数据库是这样设置的:
父表
- 身份证
- ChildId(FK,唯一)
子表
- 身份证
并在 EF Core 中以这种方式为父实体配置它:
builder.HasOne(o => o.ChildTable)
.WithOne()
.HasForeignKey<ParentTable>("ChildId")
.OnDelete(DeleteBehavior.Cascade);
当我从上下文中删除 ParentTable 实体时,它不会同时删除 ChildTable。我一定遗漏了什么,但我不知道那是什么。
感谢任何帮助。谢谢。
解决方法
在编写 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%2Csimple-key#one-to-one
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。