![](/img/trans.png)
[英]How can I efficiently delete all records in a table using Entity Framework without using SQL?
[英]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指出了两倍:
在数据库中,假设已建立外键关系,请确保选中“在删除 - >级联”条件。 您可以在SQL Server Management Studio中更改此设置。
在您的EF实体模型中,您还应该在关系上指定此选项。 为此,只需选择代表关系的实体之间的虚线。 在属性中,您将看到“Cascading Delete”的相应选项 - 您应该为具有1而不是*的End选择删除。
级联删除概念模型(和db)的关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.