如何引用相关实体时,引用的列有不同的名称

问题描述:

假设我有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。这是否有一个属性?

+0

我认为你需要有'型Employee'的'virtual'集合属性的系类和访问它像manager.Employees(集合属性)和EF将管理所有的东西给你。 –

我终于找到了在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;}** 
}