如何解决从实体框架的导航属性中删除所有记录
| 我的计划表和学生表之间具有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不可为空,则将获得异常。
, .Clear()方法非常好。它将删除数据库中的所有导航属性。那很简单,而不是foreach循环。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。