从Entity Framework中的导航属性中删除所有记录

我在Program和Student表之间有1:N关系,EF转换为导航属性。 现在我要删除此导航学生中的所有记录。 我开始是这样的:

foreach(Student student in program.Students) program.Students.Remove(student); 

但我对此有点怀疑。

比我尝试过这样:

 while (program.Students.Count > 0) program.Students.Remove(program.Students.ToList()[0]); 

但这似乎也很奇怪。

是否有一些更简单的方法来做到这一点,或者不是哪种方式最好?

我真的不知道它是否会起作用,但我无法帮助它,我很好奇。 program.Students.Clear()有效吗? 或者重置它,重新初始化它? 我希望它对你有所帮助……

编辑:请使用@Ladislav Mrnka的回复,因为这是正确的。 我试图删除答案,但我不能,因为它是被接受的

除非你有一个非常特殊的协会,称为你的程序和学生之间的关系 ,你应该使用这样的东西:

 foreach(var student in program.Students.ToList()) { program.Students.Remove(student); // Break realation context.Students.DeleteObject(student); // Delete student } 

从导航属性中删除学生只会将学生中的FK设置为​​null,但不会删除该记录。 如果FK不可为空,您将获得exception。

.Clear()方法非常好。 它删除数据库中的所有导航属性。 这很简单,而不是foreach循环。