首页 > 解决方案 > 实体框架如何在同一张表中设置外键为主键

问题描述

我写的是如何在同一个表中将外键设置为主键的问题。代码示例(它不起作用“可能导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。”)

 class Employee
        {
            [Key]
            public int EmployeeId { get; set; }
            [ForeignKey("EmployeeId")]
            public int ManagerId { get; set; }               
        }

标签: .netentity-framework

解决方案


通过[ForeignKey("EmployeeId")],您将“EmployeeId”声明为 foreignKey 属性名称,首先通过 [key] 注释为 primaryKey 声明。您应该简单地更改其中之一并添加 Manager 类的导航属性或删除所有数据注释并让 Entity Framework 处理所有事情。

public class Employee
{
   public int EmployeeId { get; set; }

  //Foreign key for Manager
  public int ManagerId { get; set; }
  public Manager Manager { get; set; }
}

public class Manager
{
   public int ManagerId { get; set; }

   public ICollection<Employee> Employees { get; set; }
}

推荐阅读