EF Core 关联删除
关联删除通常是一个数据库术语,用于描述在删除行时允许自动触发删除关联行的特征;即当主表的数据行被删除时,自动将关联表中依赖的数据行进行删除,或者将外键更新为NULL或默认值。。
在SQL Server中支持如下四种行为
- ON DELETE NO ACTION: 默认行为,删除主表数据行时,依赖表中的数据不会执行任何操作,此时会产生错误,并回滚DELETE语句。
- ON DELETE CASCADE: 删除主表数据行时,依赖表的中数据行也会同步删除。
- ON DELETE SET NULL: 删除主表数据行时,将依赖表中数据行的外键更新为NULL。为了满足此约束,目标表的外键列必须可为空值。
- ON DELETE SET DEFAULT: 删除主表数据行时,将依赖表的中数据行的外键更新为默认值。为了满足此约束,目标表的所有外键列必须具有默认值定义;如果外键可为空值,并且未显式设置默认值,则将使用NULL作为该列的隐式默认值。
EF Core 关联实体删除行为
- DeleteBehavior.Cascade 对应 ON DELETE CASCADE
- DeleteBehavior.SetNull 对应 ON DELETE SET NULL
- DeleteBehavior.ClientSetNull 对应 ON DELETE