实体框架代码第一周期或多个级联路径



我们有一个数据库,该数据库正在创建某些多个级联路径错误。我确实了解这是什么意思和正在发生的事情,但是我想知道最好的方法,因为我们必须删除一些我们拥有的一些耗尽的级联选择。

这是我们的表结构:

SCHOOL
- SchoolId  
- Name
- ....
STUDENT
- StudentId
- SchoolId
- Name
- ...
COURSE
- CourseId
- SchoolId
- Name
STUDENT-COURSE
- StudentId
- CourseId
- ....
  • shindid fk in Student删除了删除学校时与级联相关的所有学生
  • schoolid fk当然,删除学校时删除级联中有关的所有课程
  • 学生课程中的学生ID FK删除级联的所有与学生相关的学生表演
  • 学生课程中的课程ID FK删除课程时删除级联中有关的所有学生表演

所以我们有周期,因为在删除学校时,实体学生课程将从两个不同的方面删除,创建周期。

我了解这里发生了什么:

HasMany(p => p.Students)
   .WithRequired(p => p.School)
   .HasForeignKey(p => p.SchoolId)
   .WillCascadeOnDelete(true);  

我知道我可以做:

HasMany(p => p.Students)
    .WithRequired(p => p.School)
    .HasForeignKey(p => p.SchoolId)
    .WillCascadeOnDelete(false); 

这里的问题是最好的方法。

谢谢。

我会从学校删除级联删除,然后将其他人视为删除学校时,添加一些逻辑以删除相关的学生,课程(但他的课程保持了删除的一致性在较低的水平)。如果您从学生的删除级联删除Cascade上,则需要手动添加删除逻辑以使他们首先清洁相关的学生课程,并且与课程删除不一致(在删除逻辑方面不一致)。p>

相关内容

  • 没有找到相关文章

最新更新