【问题标题】:How to reference a related entity when referenced columns have different names当引用的列具有不同的名称时如何引用相关实体
【发布时间】:2015-04-07 05:40:58
【问题描述】:

假设我有 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; }

,实体框架将自动尝试在 Departments 的存储库中找到具有 DepID 的部门对象,并将其分配给 Employee.Department。(无论何时从其存储库中获取 Employee)这很容易完成,因为 Employee 和部门具有相同名称的连接列。但是如何在 Employee 和 Manager 之间强制执行相同的行为呢?如您所见,Manager 中的键列名为 ManagerID,而 Employee 中对应的列是 MngrID。有那个属性吗?

【问题讨论】:

  • 我认为您需要在 Department 类中拥有 Employee 类型的 virtual 集合属性,并像 manager.Employees(集合属性)一样访问它,EF 将为您管理所有事情。跨度>

标签: entity-framework relationship entities


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多