如何引用相关实体时,引用的列有不同的名称
问题描述:
假设我有3个实体:如何引用相关实体时,引用的列有不同的名称
public class Department{
[Key]
public int DepID {get;set;}
.......
}
public class Manager{
[Key]
public int ManagerID {get;set;}
.......
}
public class Empoyee{
[Key]
public int EmpID {get;set;}
.......
public int DepID{get;set}
public int MngrID{get;set}
}
正如你可能已经猜到雇员实体有两个部门和经理的关系。现在,如果我加入这员工
public virtual Department Department { get; set; }
,实体框架会自动尝试找到DEPID部门物体部门的资料库,并将其分配给Employee.Department(以及每当员工被取出从它的存储库中获取)由于Employee和Department都具有相同名称的连接列,因此可以轻松完成此操作。但是如何在Employee和Manager之间执行相同的行为?正如您所看到的,Manager中的键列名为ManagerID,而Employee中的相应列为MngrID。这是否有一个属性?
答
我终于找到了在ForeignKey属性帮助下做到这一点的正确方法。
public class Manager{
[Key]
public int ManagerID {get;set;}
.......
}
public class Empoyee{
[Key]
public int EmpID {get;set;}
.......
public int DepID{get;set}
public int **MngrID**{get;set}
**[ForeignKey("MngrID")]
public virtual Manager Manager {get;set;}**
}
我认为你需要有'型Employee'的'virtual'集合属性的系类和访问它像manager.Employees(集合属性)和EF将管理所有的东西给你。 –