如何使用EF4执行级联删除?

时间:2011-01-07 18:14:43

标签: c# linq entity-framework entity-framework-4

在之前的项目中,我们使用EF4执行级联删除(删除父记录并删除子记录)。在这个项目(不同的公司),EF4没有执行级联删除。要使EF4执行级联删除,我需要做什么?

3 个答案:

答案 0 :(得分:4)

仅使用EF4的级联删除是不够的;如果并非所有子项都加载到对象上下文中,您也应该在数据库上设置级联删除。话虽这么说,级联删除属性是在关联上设置的。转到模型浏览器,选择关联并查看属性。

答案 1 :(得分:0)

我在同一条船上。我只在EDM / EF4中删除级联而在数据库中没有(尚)。试试这个......

在关系中,将父节点的OnDelete(1多重性)设置为Cascade。然后在您的代码中加载所有子项,然后保存更改(删除)。

var parent = context.Parents.SingleOrDefault(p => p.Id == parentId);
parent.Children.Load();
if (parent != null)
        {
            context.Parent.DeleteObject(parent);
            context.SaveChanges();
        }

答案 2 :(得分:0)

您有两种级联删除实现方式:

  1. 在数据库层(触发器或关系)上设置它
  2. 尝试使用扩展方法。您可以为当前表定义删除逻辑,并为相关表更新调用方法。