我有一个自我引用的实体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设置为空。
如何解决此问题或解决方法?