Отношения моделирования проблем в Entity Framework, используя сначала код

Я пытаюсь сначала изучить код в Entity Framework, и у меня возникли проблемы с моделированием отношений. Это базовая база данных HR, которая состоит из двух сущностей: сотрудников и отделов.

Сотрудник принадлежит отделу, а в отделе есть администратор группы и менеджер, оба из которых фактически являются сотрудниками. Я попытался смоделировать это, используя следующее:

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, который я указал в сущности.

Что я делаю не так? Как мне определить поля и отношения, чтобы код сначала не игнорировал то, что я указываю, и генерировал собственные навигационные поля в базе данных?

8
задан Ladislav Mrnka 12 June 2011 в 13:29
поделиться