У меня есть субъект, на который есть собственная ссылка. Сотрудник:
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.
Я пробовал свободно API с:
builder.Entity<Employee>().HasMany(e => e.IsManagerOf).WithOne(e => e.Manager).OnDelete(DeleteBehavior.SetNull);
Но я получил ошибку:
Ограничение FOREIGN KEY 'FK_Employee_Employee_ManagerID' для таблицы
«Сотрудник» может вызывать циклы или несколько каскадных путей
Я не совсем понял, почему это может вызвать кружок, если менеджер удален, только поле managerID некоторых сотрудников установлено в ноль.
Как я могу это исправить или сделать обходной путь?