我有 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 个表实现了删除行为。
modelBuilder.Entity<OrganizationDomainTheme>()
.HasOne(odt => odt.OrganizationDomain)
.WithOne(od => od.OrganizationDomainTheme)
.OnDelete(DeleteBehavior.SetNull);
modelBuilder.Entity<OrganizationDomain>()
.HasOne(od => od.OrganizationDomainTheme)
.WithOne(odt=>odt.OrganizationDomain)
.OnDelete(DeleteBehavior.Cascade);
塞纳里奥。
当我删除主题时,它会将域设置为空,正如我从数字 1 中预期的那样。
但是当我删除域时,它不会删除主题。主题仍在桌面上。
我配置错了吗?请帮忙。
我想在删除域时删除属于该域的主题。
在一对一关系中,具有外键的实体是“依赖实体”(Domian)。另一个是“主体”(主题)。
当删除主体实体时,所有删除行为仅对从属实体生效。 https://entityframeworkcore.com/ saving-data-cascade-delete
AFAIK,在删除依赖实体后,您必须手动删除该主体实体。