我试图在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能够为它提供自己的实现。
答案 0 :(得分:2)
SQL CasCade delete
中有一个属性可以在从表中删除父记录时自动删除依赖项。
通过查看上面的代码,我假设您首先使用EF代码和存储库模式。如果是这种情况,那么您应该在配置中提供级联删除。你可以参考以下链接
Entity Framework (EF) Code First Cascade Delete
我希望这会对你有所帮助。