【发布时间】:2011-06-12 12:43:49
【问题描述】:
我正在尝试首先在实体框架中学习代码,但在建模关系时遇到了麻烦。这是一个基本的人力资源数据库,为此有两个实体,员工和部门。
员工属于一个部门,该部门有一个团队管理员和一个经理,这两个人实际上都是员工。我尝试使用以下方法对此进行建模:
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 列。
我做错了什么?如何定义字段和关系以避免代码首先忽略我指定的内容并在数据库中生成它自己的导航字段?
【问题讨论】:
标签: c# entity-framework-4.1 code-first