【问题标题】:Delete Child record with Parent Foreign key使用父外键删除子记录
【发布时间】:2020-06-21 10:59:59
【问题描述】:

我与 child-parent 具有一对多关系,其中包含 parent 中的孩子列表,我删除了该列表,但在数据库中它只删除了 parent Id,

家长:

  public void Configure(EntityTypeBuilder<VehicleCategory> builder)
    {

        builder.OwnsOne(o => o.Name,
            sa =>
            {
                sa.Property("StringValue").HasColumnName("Name").IsUnicode(true).IsRequired();
                sa.Ignore("CurrentCultureText");
            });

        var navigation = builder.Metadata.FindNavigation(nameof(VehicleCategory.Successors));
        navigation.SetPropertyAccessMode(PropertyAccessMode.Field);
        builder.Property(c => c.IsActive);
        builder.Property(c => c.Sequence);
    }

孩子

public void Configure(EntityTypeBuilder<VehicleSuccessorCategory> builder)
    {
        builder.HasOne<VehicleCategory>().WithMany().HasForeignKey(p => p.SuccessorId).IsRequired().OnDelete(DeleteBehavior.Cascade);
        builder.Property(e => e.Order).IsRequired();
    }

清空列表

 public virtual void DeleteAll()
    {
        _successors.Clear();
    }

【问题讨论】:

  • docs.microsoft.com/en-us/ef/core/saving/cascade-delete 您已将您的 deletebehavior 属性设置为“restrict”并且您正在寻找“cascade”。
  • 我确实将它设置为级联,但也不工作
  • 你能粘贴你的删除代码吗?
  • 我更新了代码
  • @sam 请看看我的回答。

标签: sql sql-server entity-framework entity-framework-core


【解决方案1】:
builder.HasOne<VehicleCategory>().WithMany(e => e.Successors).OnDelete(DeleteBehavior.Cascade).IsRequired();

【讨论】:

  • 请补充说明。
  • 这是因为我的父母和孩子之间的关系。双方都是一对多。 .HasForeignKey(p =&gt; p.SuccessorId)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多