Я пытаюсь сначала изучить код в Entity Framework, и у меня возникают проблемы при моделировании отношений. Это базовая база данных по кадрам, в которой есть две организации: сотрудники и отделы.
Сотрудник принадлежит к отделу, а в отделе есть администратор группы и менеджер, оба из которых являются действующими сотрудниками. Я попытался смоделировать это, используя следующее:
EMPLOYEE
public int? DepartmentID { get; set; }
public virtual Department Department { get; set; }
Context:
modelBuilder.Entity<Employee>().HasOptional(x => x.Department);
DEPARTMENT
public class Department
{
[Required]
public int DepartmentID { get; set; }
[Required(ErrorMessage = "The description is required.")]
public string Description { get; set; }
public int? ManagerID { get; set; }
public virtual Employee Manager { get; set; }
public int? TeamAdministratorID { get; set; }
public virtual Employee TeamAdministrator { get; set; }
}
Context:
modelBuilder.Entity<Department>().HasOptional(x => x.Manager);
modelBuilder.Entity<Department>().HasOptional(x => x.TeamAdministrator);
Очевидно, я хотел бы, чтобы таблица Department имела только четыре столбца - DepartmentID, Description, ManagerID и TeamAdministratorID, но она генерирует дополнительные два для отношения, а именно Manager_EmployeeID и Team_Administrator_EmployeeID. Кроме того, в таблице Employee создается столбец Department_DepartmentID для хранения вместо него идентификатора DepartmentID с использованием столбца DepartmentID, указанного в сущности.
Что я делаю не так? Как мне определить поля и отношения, чтобы код сначала не игнорировал то, что я указал, и генерировал собственные поля навигации в базе данных?