在具有依赖项时从数据库中删除对象

时间:2014-02-21 04:28:01

标签: c# asp.net asp.net-mvc-3 cascading-deletes

我试图在MVC3中实现删除操作,但我明白了我要删除的对象在其他表中具有依赖性,这就是我得到的原因:

  

DELETE语句与REFERENCE约束冲突

这是我在控制器中的方法:

[HttpPost]
public ActionResult Delete(int? id)
{
    repo.DeleteDirector(id);
    return View("index");
}

这就是我在我的存储库中删除它的方式:

void DeleteDirector(int? id)
{
    Director d = dc.Directors.FirstOrDefault(dir => dir.Id == id);
    dc.Directors.Remove(d);
    dc.SaveChanges();
}

我希望简单的LINQ Remove方法可以完成这项工作,但事实并非如此。 因此,我试图想出一种方法来有效地删除所有依赖项。我知道我可以通过浏览可能引用特定Director的所有表来手动完成。但是我希望Framework能够为它提供自己的实现。

1 个答案:

答案 0 :(得分:2)

SQL CasCade delete中有一个属性可以在从表中删除父记录时自动删除依赖项。

通过查看上面的代码,我假设您首先使用EF代码和存储库模式。如果是这种情况,那么您应该在配置中提供级联删除。你可以参考以下链接

Entity Framework (EF) Code First Cascade Delete

我希望这会对你有所帮助。