首页 > 解决方案 > 如何使用 Asp.coreBoilerplate 实体框架实现级联删除?

问题描述

我想在 asp.net 核心样板的删除功能上实现 Cascade。但我不能这样做吗?这是我为此所做的。

公司是父类:

  public class Company:FullAuditedEntity<long>
{
    public string CompanyName { get; set; }

    public string EmployeesCount { get; set; }

    public virtual ICollection<Employees> Employees { get; set; }
}

Employee 是与 Company 类具有一对多关系的子类。

public class Employees:FullAuditedEntity<long>
{
    public string EmployeeName { get; set; }
    public string Salaray { get; set; }

    [ForeignKey("Company")]
    public long CompanyId { get; set; }
    public virtual Company Company { get; set; }
}

这是我在 Dbcontext 类中为实现 Cascade on Delete 功能所做的工作。

 protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employees>()
                .HasOne(e => e.Company)
                .WithOne()
                .OnDelete(DeleteBehavior.Cascade).HasForeignKey<Employees>(t=>t.CompanyId);
    }

但是当我删除父实体(公司)的记录时,子表(员工)中的相关记录不会被删除。

标签: sql-serverentity-framework-4dbcontextasp.net-boilerplate

解决方案


推荐阅读