从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循环。