entity-framework - 如何设置 EF Core 以在一对一关系上级联删除?
问题描述
我正在尝试让级联删除在 EF Core 5 中为一对一关系工作。当我删除 ParentTable 实体时,我希望也从数据库中删除关联的 ChildTable 实体。
数据库是这样设置的:
父表
- ID
- ChildId(FK,唯一)
子表
- ID
并以这种方式在 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% 2C简单键#一对一
推荐阅读
- r - R Studio/AWS 内存要求
- google-apps-script - GAS 函数的输出不是单个单元格值,而是整列值
- javascript - 在 Javascript 函数中访问嵌套数组
- python - 如何为我的转化创建函数
- python - 将 dask 数据帧保存到 csv 时如何更正错误?
- node.js - 在 Angular、Node.js、NestJS 和 Firebase 中开发应用程序
- c++ - 关于类模板的构造函数重载
- java - 重载重写的泛型方法 - java
- vue.js - 如何配置 laravel-mix 以便能够将 @material 与 vue.js 一起使用
- webassembly - WebAssembly 错误可以显示行号和文件吗?