我们希望将删除行为从可为空外键更改为级联。 因此,如果我们删除 Item,如果 SubItemA 和 SubItemB 不为空,我们也会删除它。 我们已经使用 Fluentapi 尝试了一些方法,但我们似乎无法找到正确的解决方案。我们确实希望保持当前模型的原样。有可能的解决方案吗? 我们使用的是 EF core 3.1。
public class Item
{
public int Id { get; set; }
public int? SubItemAId { get; set; }
public SubItemA SubItemA { get; set; }
public int? SubItemBId { get; set; }
public SubItemB SubItemB { get; set; }
}
public class SubItemA
{
public int Id { get; set; }
public string Text { get; set; }
}
public class SubItemB
{
public int Id { get; set; }
public string Text { get; set; }
}
在 Context.cs 中子实体的 Fluent api 中,您可以执行以下操作:
modelBuilder.Entity<Child>()
.HasOne(c => c.Parent)
.WithMany(p => p.Children)
.HasForeignKey(c => c.ParentID)
.OnDelete(DeleteBehavior.Cascade);
由于我们将DeleteBehaviour设置为Cascade,因此删除时会删除父行引用的子行。