如何以高效的方式删除EF实体?

时间:2011-09-13 07:05:38

标签: .net silverlight entity-framework wcf-ria-services

我有以下(简化的)EF模型,我正在使用RIA服务访问:

public class Employee
{
    public long Id { get; set; }
    public string Name { get; set; }
}

public class Department
{
    public long Id { get; set; }
    public string Name { get; set; }
    public List<Employee> { get; set;}
}

我希望当我从DomainContext中删除部门时,也会删除引用的Employees。基本上是级联删除,由EF处理。

现在我找到了两种方法来实现这个目标:

1。在数据库级别启用级联删除:

如果可能的话,我真的,真的不喜欢这样做。

2。在运行时加载子实体(Employees)(当前已实现):

当用户想要删除部门时,Employees被加载到列表中,迭代并从上下文中删除。我忍不住觉得这很笨重,但它有效......

有关处理此问题的正确方法的任何想法?谢谢!

1 个答案:

答案 0 :(得分:3)

您提到了EF支持的两种方式。如果你不喜欢它们,你需要存储过程 - 没有更好的方法。在EF的情况下,最常见的解决方案是级联删除。