//整体关闭外键级联删除
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
还是单独 .WillCascadeOnDelete(false)
删除出现异常:
操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null。对关系作出更改后,会将相关的外键属性设置为 null 值。如果外键不支持 null 值,则必须定义新的关系,必须向外键属性分配另一个非 null 值,或必须删除无关的对象。
我不想级联删除导航属性的子表 怎么解决啊?
删除表和表之间的关系
数据库没建立外键关系,只是实体类里使用了virtual 导航属性,应该是ef默认约定字段名称相同的为外键字段
@軒轅劍:
using System.Data.Entity.ModelConfiguration.Conventions; public class MyDbContext : DbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); } }
比如说
商品类 和 品牌类 做关联,商品类里有个品牌ID 外键关联到品牌类的主键,你把商品类里的品牌ID设置成可空就搞定