2014-04-04 83 views
1

我有一个从“IdentityUser”继承的员工类。自我参考EF中多个成员中相同类型之间的关联

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可选和经理为必选。

UPDATE 我真正想要的是让员工的列表,每个员工都可以有一个TeamLead(这也是一个Employee类),必须有一个管理器(也工作性质)。 经理是必需的,意味着至少有一名员工是自己的经理。

回答

0

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

使用流利的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; } 
} 
+0

当我尝试插入记录时,它说:'eHRMSContext.Employees'中的实体参与'Employee_TeamLead'关系。找到0个相关的'Employee_TeamLead_Source'。 1'Employee_TeamLead_Source'是预期的。 – SaQiB

相关问题