如何删除与“用户”关联的所有记录?

时间:2011-03-29 00:51:03

标签: entity-framework asp.net-mvc-3

我正在使用Entity Framework以及默认的ASP.NET Membership服务。我还有一个第三个表格,用于“个人资料信息”。我以为EF会在内部处理所有内容,但事实并非如此。当我尝试通过转到像http://localhost:19506/User/Delete/SomeGUIDhere这样的URL来删除用户时,我得到了一些与存在外键约束这一事实有关的令人讨厌的错误。

如何管理这些类型的依赖项?不得不追踪它所有这一切都打败了EF的目的所以我猜我错过了一些小事。

编辑包含我正在使用的一些代码。我仍然想知道是否有比下面更好的方法。看起来它很快就会失控,很多外键依赖依赖。

public void DeleteUser(User u)
{
    db.Profiles.DeleteObject(u.Profile);
    db.aspnet_Membership.DeleteObject(u.aspnet_Membership);
    db.Users.DeleteObject(u);
    db.SaveChanges();
}

2 个答案:

答案 0 :(得分:2)

  

这些类型的依赖关系如何?   管理?必须跟踪它   所有这些都打败了EF的目的   所以我猜我错过了什么   次要的。

不幸的是,这仍然是一个手动过程,并且正如@Danny Varod所指出的那样两倍:

  1. 在您的数据库中,假设已建立外键关系,请确保选中条件“On Delete - > Cascade”。您可以在SQL Server Management Studio中更改此内容。

  2. 在EF实体模型中,您还应该在关系上指定此选项。为此,只需选择代表关系的实体之间的虚线。在属性中,您将看到“级联删除”的相应选项 - 您应该为具有 1 的结束选择删除,而不是*。

  3. enter image description here

答案 1 :(得分:1)

对概念模型(和db)的关系进行级联删除。