删除代码优先级联-一对零或一

本文关键字:级联 代码 删除 | 更新日期: 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);