繁体   English   中英

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

[英]How can I delete all records associated with a “User”?

我正在使用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();
}

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

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

  1. 在数据库中,假设已建立外键关系,请确保选中“在删除 - >级联”条件。 您可以在SQL Server Management Studio中更改此设置。

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

在此输入图像描述

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM