实体框架核心自引用表在删除时设置为null

时间:2018-07-05 14:23:33

标签: entity-framework asp.net-core entity-framework-core

我有一个自我引用的实体Employee:

public class Employee
    {
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int EmployeeID { get; set; }
    public string UserId { get; set; }

    [Required]
    public String LastName { get; set; }
    [Required]
    public String FirstName { get; set; }
    [Required]
    public String Job { get; set; }

    public int? ManagerID { get; set; }
    [ForeignKey("ManagerID")]
    public virtual Employee Manager { get; set; }

    [ForeignKey("ResponsableID")]
    public virtual List<Employee> IsManagerOf { get; set; }

    [ForeignKey("EmployeeID")]
    public List<Signature> Signatures { get; set; }

    [ForeignKey("EmployeeID")]
    public List<Object> Objects { get; set; }

}

员工可以有一个经理,该经理是该员工。但是,如果经理被删除,我想将字段ManagerID设置为null。
我已经尝试使用fluent API了:

builder.Entity<Employee>().HasMany(e => e.IsManagerOf).WithOne(e => e.Manager).OnDelete(DeleteBehavior.SetNull);

但是我得到了错误:

  

表上的外键约束'FK_Employee_Employee_ManagerID'   “员工”可能会导致循环或多个级联路径

我真的不明白为什么它会引起圈子,如果删除经理,只有某些员工的field managerID设置为空。

如何解决此问题或解决方法?

0 个答案:

没有答案