entity framework中的多个自引用关系

我目前有一个名为EmployeeDetails的类,如下所示。

 public class EmployeeDetails { public int EmployeeDetailsId { get; set; } public string Name { get; set; } public string Title { get; set; } [ForeignKey("Manager")] public int? ManagerId { get; set; } public virtual EmployeeDetails Manager { get; set; } [ForeignKey("LineManager")] public int? LineManagerId { get; set; } public virtual EmployeeDetails LineManager { get; set; } } 

我正在尝试添加将引用相同类型的对象的ManagerLineManager属性。 当我尝试添加迁移时,我收到以下错误:

无法确定EmployeeDetailsEmployeeDetails类型之间关联的主要结束。

在添加LineManagerIdLineManagerId和LineManager属性之前,Manager属性按预期工作。

我该如何解决?

你必须指定关系的另一面。 像这样:

 public class EmployeeDetails { public int EmployeeDetailsId { get; set; } public string Name { get; set; } public string Title { get; set; } [ForeignKey("Manager")] public int? ManagerId { get; set; } public virtual EmployeeDetails Manager { get; set; } [ForeignKey("LineManager")] public int? LineManagerId { get; set; } public virtual EmployeeDetails LineManager { get; set; } [ForeignKey("ManagerId")] public virtual ICollection ManagedEmployees { get; set; } [ForeignKey("LineManagerId")] public virtual ICollection LineManagedEmployees { get; set; } } 

生成的迁移

 CreateTable( "dbo.EmployeeDetails", c => new { EmployeeDetailsId = c.Int(nullable: false, identity: true), Name = c.String(), Title = c.String(), ManagerId = c.Int(), LineManagerId = c.Int(), }) .PrimaryKey(t => t.EmployeeDetailsId) .ForeignKey("dbo.EmployeeDetails", t => t.LineManagerId) .ForeignKey("dbo.EmployeeDetails", t => t.ManagerId) .Index(t => t.ManagerId) .Index(t => t.LineManagerId); 

这会解决你的问题吗?