实体框架:删除记录及其子记录

时间:2010-09-26 10:00:47

标签: c# entity-framework

我有一个包含3列的表:ID, Name, ParentID.

如何删除包含所有子项(n级深)的特定记录?

使用Entity Framework 3.5。

3 个答案:

答案 0 :(得分:5)

该表是自引用的是应用程序逻辑,它不在SQL定义中表示,因此不被EF理解。

要通过EF删除这些记录,您需要编写一个从顶部开始并加载所有子项的例程。然后将所有这些项目标记为已删除,然后调用保存更改。

删除项目:

context.DeleteObject(item);
context.SaveChanges();

答案 1 :(得分:2)

在SQL中将数据库关系设置为级联删除,然后重建EDMX。

答案 2 :(得分:1)

@Shivesh - 我建议你使用recursion实现的一个小方法删除一个儿子及其所有父母。因此,如果父母有父母,你也可以删除它们,等等。

替代方案可能是实现存储过程,EntityFramework中的相应链接,并且非常相同。

希望有所帮助,