我正在使用Entity Framework核心,并向我的项目添加了一个名为CourseOffering的模型。该模型与Section等其他类相关。我已成功为其创建了迁移。问题是当我尝试将迁移应用于数据库时。我收到以下错误:
在表'CourseOfferings'上引入FOREIGN KEY约束'FK_CourseOfferings_Sections_SectionId'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。查看以前的错误。
我试图用FluentAPI关闭级联删除,但是我不完全确定这是否是解决我的问题的正确方法。我的意思是关闭层叠删除是否完全安全?
我的课程提供模型:
public class CourseOffering
{
public int Id { get; set; }
public Section Section { get; set; }
public Instructor Instructor { get; set; }
public Course Course { get; set; }
public AcademicSemester AcademicSemester { get; set; }
public int SectionId { get; set; }
public int InstructorId { get; set; }
public int? CourseId { get; set; }
public int AcademicSemesterId { get; set; }
}
我的部分模型:
public class Section
{
public int Id { get; set; }
[Required]
[StringLength(10)]
public string Name { get; set; }
public int EntranceYear { get; set; }
public int StudentCount { get; set; }
public Department Department { get; set; }
public ProgramType Program { get; set; }
public AdmissionLevel AdmissionLevel { get; set; }
public ICollection<RoomSectionAssignment> RoomAssignments { get; set; }
public int DepartmentId { get; set; }
public int ProgramTypeId { get; set; }
public int AdmissionLevelId { get; set; }
public Section()
{
RoomAssignments = new Collection<RoomSectionAssignment>();
}
}
该迁移创建了所有必需的外键,但是存在会导致循环的级联路径。我无法弄清楚是什么原因导致了周期。我应该只使用FluentAPI关闭层叠删除吗?
答案 0 :(得分:1)
我试图用
FluentAPI
关闭级联删除,但是我不确定这是否是解决我问题的正确方法。我的意思是关闭层叠删除是否完全安全?
是的!在这种情况下,这是合适的解决方案!而且是的!使用FluentAPI
关闭层叠删除是完全安全的,因为FluentAPI
也会对数据库产生约束。