c# - 自引用实体可能导致循环或多个级联路径
问题描述
我有以下实体:
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);
但它没有帮助。
解决方案
推荐阅读
- css - 如何制作圆形照片的裁剪?
- kotlin - Kotlin 函数作为 val 表达式
- python - distplot 折旧。尝试使用函数使用 displot 或 histplot 创建多个图
- javascript - 使元素在角度 2 中可调整大小
- c++ - C++ 中的惰性概念(或如何在概念中保存类型)
- if-statement - 使用 rand MethodError: 没有方法匹配 isless(::Array{Float64,1}, ::Float64)
- javascript - 解析 HTML 代码并保留原始大小写
- python - 在python绘图动画中更改点颜色
- javascript - 仅当名称和位置不匹配时才插入
- python - 如何获取for循环的计数并将其存储到for循环内部的字典中