我正在开发一个与教育行业相关的应用程序,我有以下几类课程 .

public class Person : EntityBase<long>
{
    public string Surname { get; set; }
    public string First { get; set; }
    public string Middle { get; set; }
    public Gender Gender { get; set; }
    public DateTime Dob { get; set; }
}

public class Student: Person
{
    public string AdmissionId { get; set; }
    public string StudentId { get; set; }
    public List<GuardianLink> Guardians { get; set; }
    public StudentStatus Status { get; set; }       
}

public class Guardian: Person
{
    public GuardianType GuardianType { get; set; }
    public List<GuardianLink> Students { get; set; }     
}

public class GuardianLink: EntityBase<long>
{
    [Required]
    public Student Student { get; set; }
    [Required]
    public Guardian Guardian { get; set; }

    public Boolean IsEmergencyContact { get; set; }
    public Boolean IsAllowedToPickup { get; set; }
}

当我尝试从这些类创建数据库时,我收到一个错误,这将导致循环级联删除 . 所以我添加了以下内容 .

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<GuardianLink>()
            .HasRequired(c => c.Guardian)
            .WithMany()
            .WillCascadeOnDelete(false);

    modelBuilder.Entity<GuardianLink>()
            .HasRequired(c => c.Student)
            .WithMany()
            .WillCascadeOnDelete(false);
}

我希望这可以解决这个问题,但我仍然遇到错误 .

在表'GuardianLinks'上引入FOREIGN KEY约束'FK_dbo.GuardianLinks_dbo.People_Student_Id'可能会导致循环或多个级联路径 . 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束 .

我想配置这个,以便在删除监护人时删除学生删除相关链接,但不删除监护人,反之亦然 . 为什么不解决这个问题呢?我应该做什么呢?