首先使用代码在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表中,将使用实体中指定的DepartmentID列生成Department_DepartmentID列来存储DepartmentID,而不是存储DepartmentID。
我究竟做错了什么?我如何定义字段和关系以避免代码首先忽略我指定的内容并在数据库中生成它自己的导航字段?
没有找到相关结果
已邀请:
2 个回复
砷竣阿
对于部门使用:
顺便说一句。如果在关系的相反侧没有集合导航属性,则将很难使用模型(所有
均为空)。至少
应该具有:
映射应修改为:
揽芳僵迷仇
为了显示员工与部门之间的关系,您使用了ID和Department。实际上,您只需要执行一次-通过
。默认情况下,EF搜索ID属性并为您链接两个类。因此,您的类应仅包含一个ID-类本身的ID。尝试删除其他类的ID。