为什么我的删除级联策略无法正常工作

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

我有 2 个表,分别称为“域”和“域主题”。它具有一对一的关系。这是 2 个模型类。

public class Domain
    {
        
        public int OrganizationDomainId { get; set; }
        [MaxLength(200), Required]
        public string Domain { get; set; }
        public bool Active { get; set; }
        public int? ThemeId { get; set; }
        [ForeignKey("ThemeId")]
        public virtual OrganizationDomainTheme OrganizationDomainTheme {get;set;}

    }
public class OrganizationDomainTheme
    {
        public int OrganizationDomainThemeId { get; set; }
        public string PrimaryColor{get;set;}
        public virtual OrganizationDomain OrganizationDomain { get; set; }
        
    }

我已经通过使用模型生成器为我的 2 个表实现了删除行为。

  1. 删除主题时将域设置为空。 (这工作正常)
modelBuilder.Entity<OrganizationDomainTheme>()
                .HasOne(odt => odt.OrganizationDomain)
                .WithOne(od => od.OrganizationDomainTheme)
                .OnDelete(DeleteBehavior.SetNull);
  1. 删除域应删除主题。(这未按预期工作)
modelBuilder.Entity<OrganizationDomain>()
                .HasOne(od => od.OrganizationDomainTheme)
                .WithOne(odt=>odt.OrganizationDomain)
                .OnDelete(DeleteBehavior.Cascade);

塞纳里奥。

当我删除主题时,它会将域设置为空,正如我从数字 1 中预期的那样。

但是当我删除域时,它不会删除主题。主题仍在桌面上。

我配置错了吗?请帮忙。

我想在删除域时删除属于该域的主题。

.net entity-framework asp.net-core cascading-deletes ef-model-builder
1个回答
0
投票

在一对一关系中,具有外键的实体是“依赖实体”(Domian)。另一个是“主体”(主题)。
当删除主体实体时,所有删除行为仅对从属实体生效。 https://entityframeworkcore.com/ saving-data-cascade-delete
AFAIK,在删除依赖实体后,您必须手动删除该主体实体。

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