EF Core中包含多个外键的表的默认删除选项是什么
EF Core 一对多关系默认删除行为说明
核心规则
你使用的builder.HasMany(c => c.Experts);属于EF Core中一对多关系的Fluent API配置,未显式指定删除规则时,默认行为由外键字段的可空性决定:
- 外键为不可空类型:默认采用
Cascade(级联删除)策略。主表记录删除时,所有关联的从表记录会被同步删除。 - 外键为可空类型:默认采用
ClientSetNull策略。主表记录删除时,EF Core会自动将关联从表记录的对应外键字段赋值为null,从表记录本身不会被删除。
手动指定删除规则的示例
如果你需要修改默认行为,可以链式调用OnDelete方法传入指定的删除策略枚举:
builder.HasMany(c => c.Experts) .WithOne() // 此处根据你的实体导航配置调整,如有反向导航可填写对应的导航属性 .OnDelete(DeleteBehavior.Restrict);
常见删除策略枚举说明
Cascade:级联删除,主表记录删除时同步删除关联从表记录Restrict:存在关联从表记录时禁止删除主表记录,触发外键约束报错SetNull:主表记录删除时将关联从表记录的外键字段设为nullNoAction:行为和Restrict基本一致,具体差异由底层数据库的外键约束逻辑决定
内容的提问来源于stack exchange,提问作者MohammadMehrabiHadi
相关产品推荐
相关产品推荐

