EF Core 级联删除可为空的外键

问题描述 投票:0回答:1

我们希望将删除行为从可为空外键更改为级联。 因此,如果我们删除 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; }
}
entity-framework-core ef-code-first ef-core-3.1
1个回答
0
投票

在 Context.cs 中子实体的 Fluent api 中,您可以执行以下操作:

modelBuilder.Entity<Child>()
    .HasOne(c => c.Parent)
    .WithMany(p => p.Children)
    .HasForeignKey(c => c.ParentID)
    .OnDelete(DeleteBehavior.Cascade);

由于我们将DeleteBehaviour设置为Cascade,因此删除时会删除父行引用的子行。

© www.soinside.com 2019 - 2024. All rights reserved.