前言
最近忙于.NET COERE WEB API的学习,遇到EFCORE中关于级联删除的知识,正好使用postman实践一下。
理论知识
(这块直接贴的官方文档,官方文档很清楚了)
概念
级联删除通常在数据库术语中用来描述一种允许在删除某行时自动触发删除相关行的特性。 EF Core 删除行为还介绍了一个密切相关的概念,即子实体与父实体的关系已断开时自动删除该子实体,这通常称为“删除孤立项”。
EF Core 实现多种不同的删除行为,并允许配置各个关系的删除行为。 EF Core 还实现基于关系的需求为每个关系自动配置有用的默认删除行为的约定。
删除行为
删除行为在 DeleteBehavior 枚举器类型中定义,并且可以传递到 OnDelete Fluent API 来控制是主体/父实体的删除还是依赖实体/子实体关系的断开会对依赖实体/子实体产生副作用。
删除主体/父实体或断开与子实体的关系时有三个 EF 可执行的操作:
- 可以删除子项/依赖项
- 子项的外键值可以设置为 null
- 子项保持不变
备注
仅当使用 EF Core 删除主体且将依赖实体加载到内存中(即对于跟踪的依赖项)时才应用 EF Core 模型中配置的删除行为。 需要在数据库中设置相应的级联行为以确保未由上下文跟踪的数据已应用必要的操作。 如果使用 EF Core 创建数据库,将为你设置此级联行为。
对于上述第二个操作,如果外键不可以为 n