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

时间:2014-08-18 17:30:48

标签: c# .net entity-framework fluent-migrator

我有一个名为 Items 的实体,然后我有几个实体对此表键 ItemId 有一个外键(NOT NULLABLE)

然后我还有另一个名为士兵的表格,它也取决于项目,但在这种情况下,它是一个(NULLABLE)外键。< / p>

当我删除表中的项目时,我会收到有关士兵表中存在的项目的错误消息。如果我没有士兵的项目我没有收到错误,所有其他表格都被正确级联删除。

我想我必须在Fluent API上添加一些内容才能在此表上进行级联删除,但我不知道该怎么做。

由于

1 个答案:

答案 0 :(得分:1)

您可以使用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);