当引用的列具有不同名称时如何引用相关实体
How to reference a related entity when referenced columns have different names
假设我有 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}
}
您可能猜到了,Employee 实体与 Department 和 Manager 都有关系。现在,如果我将它添加到 Employee
public virtual Department Department { get; set; }
,entity framework 将自动尝试在 Departments 的存储库中查找具有 DepID 的部门对象,并将其分配给 Employee.Department。(每当从其存储库中获取 Employee 时)这很容易完成,因为 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;}**
}
假设我有 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}
}
您可能猜到了,Employee 实体与 Department 和 Manager 都有关系。现在,如果我将它添加到 Employee
public virtual Department Department { get; set; }
,entity framework 将自动尝试在 Departments 的存储库中查找具有 DepID 的部门对象,并将其分配给 Employee.Department。(每当从其存储库中获取 Employee 时)这很容易完成,因为 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;}**
}