自我引用EF中多个成员的相同类型之间的关联

时间:2014-04-04 07:35:54

标签: c# entity-framework

我有一个继承自" IdentityUser"。

的员工类
  public class Employee : IdentityUser
    { 
       public String Name { get; set; }
       public string ManagerID { get; set; }
       public virtual Employee Manager { get; set; }
    } 

这很好用,但是当我添加另一个相同类型的属性时,比如

public virtual Employee TeamLead { get; set; }

抛出以下异常:

  

无法确定之间关联的主要结束   类型' eHRMS.DAL.Models.Employee'和' eHRMS.DAL.Models.Employee'。该   必须使用显式配置此关联的主要结尾   关系流畅的API或数据注释

附加说明: 我希望TeamLead是可选的,Manager需要。

更新 我真正想要的是拥有一个员工列表,每个员工都可以拥有一个TeamLead(也是一个Employee类型),并且必须有一个Manager(也是Employee Type)。 经理是必需的,意味着至少有一名员工是自己的经理。

1 个答案:

答案 0 :(得分:0)

错误消息告诉您,它不知道哪个实体依赖于哪个。

使用Fluent API,您可以告诉模型构建器,它是dependet,并且可以选择:

modelBuilder.Entity<Employee>()
            .HasOptional(f => f.TeamLead)
            .WithRequired(s => s.Manager);

如果员工需要经理,您可以使用DataAnnotations来解决这个问题:

public class Employee : IdentityUser
{ 
   public String Name { get; set; }
   public string ManagerID { get; set; }

   [Required]
   public virtual Employee Manager { get; set; }

   public virtual Employee TeamLead { get; set; }
}