首页 > 解决方案 > 自引用实体可能导致循环或多个级联路径

问题描述

我有以下实体:

public class Department
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<Employee> Employees { get; set; }

        public int? HeadDepartmentId { get; set; }
        public Department HeadDepartment { get; set; }

        public List<Department> ChildDepartments { get; set; }
    }

我添加迁移,然后尝试更新数据库,结果:

Introducing FOREIGN KEY constraint 'FK_Departments_Departments_HeadDepartmentId' on table 'Departments' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.

我接下来尝试:

builder.Entity<Department>()
                .HasOne(p => p.HeadDepartment)
                .WithMany(p => p.ChildDepartments)
                .HasForeignKey(p => p.HeadDepartmentId).OnDelete(DeleteBehavior.ClientSetNull);

但它没有帮助。

标签: c#entity-framework-core

解决方案


推荐阅读