Попытка создать простое приложение CRUD, используя Asp Net Core. У меня есть 2 объекта: отдел и сотрудник (один ко многим). Мне нужно удалить запись из таблицы отдела. Но когда я пытаюсь удалить запись, используя OnDelete(DeleteBehavior.Restrict)
или OnDelete(DeleteBehavior.ClientSetNull)
, у меня возникает исключение:
ОБНОВЛЕНИЕ или УДАЛЕНИЕ в таблице «Отделы» нарушает ограничение внешнего ключа «FK_Employees_Departments_DepartmentCode», таблица «Сотрудники»
Как я могу решить эту проблему? Сотрудник организации:
public class Employee
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required(ErrorMessage = "Input fullname of employee")]
public string FullName { get; set; }
[Required(ErrorMessage = "Input date of birth")]
public DateTime DateOfBirth { get; set; }
[Required(ErrorMessage = "Input code")]
public string Code { get; set; }
[Required(ErrorMessage = "Input fullname of employee")]
public int Salary { get; set; }
public string DepartmentCode { get; set; }
public Department Department { get; set; }
}
Отдел организации:
public class Department
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required(ErrorMessage = "Input name of department")]
public string Name { get; set; }
[Required(ErrorMessage = "Input code of department")]
public string Code { get; set; }
public ICollection<Employee> Employees { get; set; }
public Department()
{
Employees = new List<Employee>();
}
}
Настройки класса контекста:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Department>()
.HasMany<Employee>(d => d.Employees)
.WithOne(e => e.Department)
.HasForeignKey(e => e.DepartmentCode)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<Department>()
.HasKey(d => d.Code);
modelBuilder.Entity<Employee>()
.HasKey(e => e.Code);
modelBuilder.Entity<Department>()
.HasIndex(d => d.Name).IsUnique();
}