删除代码优先级联-一对零或一
本文关键字:级联 代码 删除 | 更新日期: 2023-09-27 18:18:27
我有一个名为Items的实体,然后我有几个实体有一个外键(NOT NULLABLE)到这个表键ItemId。
然后我有另一个名为Soldiers的表,它也取决于Items,但在这种情况下,它是(NULLABLE)外键。
当我删除Items表上的一个项目时,我得到一个关于Soldiers表上存在的项目的错误。如果我没有Soldiers的项目,我不会得到错误,所有其他表被正确级联删除。
我想我必须在Fluent API上放一些东西来级联删除也在这张表上,但我不确定如何做到这一点。
谢谢
您可以配置 WithCascadeOnDelete
modelBuilder.Entity<Item>()
.HasMany(i => i.Soldiers)
.WithOptional(s => s.Item)
.HasForeignKey(s => s.ItemId)
.WillCascadeOnDelete(true);
或
modelBuilder.Entity<Soldier>()
.HasOptional(s => s.Item)
.WithMany() // -> use i => i.Soldiers if any
.HasForeignKey(i => i.ItemId)
.WillCascadeOnDelete(true);