EF Core级联删除

前言

最近忙于.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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EF Core 中,级联更新是指在更新一个实体时,自动更新与之关联的其他实体EF Core 提供了几种级联更新的选项,可以根据需要选择适合的方式。 1. 配置级联更新:可以通过 Fluent API 或者数据注解来配置级联更新行为。例如,可以使用 `OnDelete` 方法来配置关系的删除行为,从而实现级联更新。例如,可以使用 `OnDelete(DeleteBehavior.Cascade)` 来配置级联删除。 2. 手动处理级联更新:在某些情况下,可能需要手动处理级联更新。可以在更新操作之前获取关联的实体,并手动更新它们的属性。这需要在代码中显式地处理级联更新逻辑。 3. 使用 Include 方法加载关联实体:在查询数据时,可以使用 Include 方法来加载与之关联的实体,以便在更新时一并更新这些实体。例如,使用 `Include` 方法加载关联实体,然后对它们进行修改后再保存更改。 4. 使用导航属性来进行级联更新:在 EF Core 中,使用导航属性可以方便地进行级联更新。通过设置导航属性的值,可以自动更新关联的实体。例如,通过设置导航属性的引用,可以自动更新外键关系。 需要注意的是,在使用级联更新时,应谨慎处理循环引用的情况,以避免无限递归和性能问题。可以通过配置导航属性的 `OnDelete` 行为或手动处理级联更新来解决循环引用的问题。 这些是在 EF Core 中实现级联更新的一些常见方法和技巧。根据具体的业务需求和数据模型,可以选择适合的方式来处理级联更新操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值