我有一个名为Items的实体,然后我有几个实体具有该表键ItemId的外键(NOT NULLABLE)。
然后我有另一个名为Soldiers的表,它也依赖于Items,但在这种情况下,它是一个(NULLABLE)外键。
当我删除Items表中的项目时,我收到有关Soldiers表中存在的项目的错误。如果我没有带物品的士兵,我不会收到错误消息,并且所有其他表都已正确级联删除。
我想我必须在 Fluent API 上放一些东西才能在这张桌子上级联删除,但我不知道该怎么做。
谢谢
我有一个名为Items的实体,然后我有几个实体具有该表键ItemId的外键(NOT NULLABLE)。
然后我有另一个名为Soldiers的表,它也依赖于Items,但在这种情况下,它是一个(NULLABLE)外键。
当我删除Items表中的项目时,我收到有关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);