如何用Entity Framework(EF6)删除Asp.Net MVC 5中的ApplicationUser?

问题描述:

我很努力地删除我的应用程序中的ApplicationUser。我不介意用硬删除,但这给了我很多挑战。用户可以创建其他用户可以评论的帖子。如果其他用户对用户的帖子发表了评论,则该用户不能被硬删除,因为删除尝试级联到该帖子(被现有评论阻止)。如何用Entity Framework(EF6)删除Asp.Net MVC 5中的ApplicationUser?

我也可以使用软删除方法,但这似乎是一个噩梦来处理大型应用程序。我发现我必须添加if (!user.IsDeleted){...}围绕提及用户的任何内容(评论和帖子作者参考,登录,注册和帐户/管理控制器中的几乎所有内容),并且必须考虑在将来添加的代码中添加支票。

我试过寻找处理用户删除的已建立的方法,但我似乎无法找到任何(除了像“如何添加”IsDelete“属性到您的用户,这几乎没有进入快速文章足够详细的含义)那么是否有正确的方法来处理用户删除?似乎最好的办法是开始让我的手脏乱与级联,但我不知道从哪里开始

+0

要显示有关用户时,会显示一则讯息是什么? –

+0

“删除”代替作者。帖子内容仍然可以显示 – NicholasFolk

+0

所以我想他们应该实际上被检索,但只显示别名而不是他们的名字。 –

我强烈建议,看看哪些已经在ASP.NET样板。它实现了软删除方法是免费和开源

软删除过滤器用于在查询数据库时自动过滤(从 中提取结果)删除的实体。如果一个实体应该软删除 ,它必须实现ISoftDelete接口,它定义了只有IsDeleted属性的 。

例:

public class Person : Entity, ISoftDelete 
{ 
    public virtual string Name { get; set; } 

    public virtual bool IsDeleted { get; set; } 
} 

这里是链接:ISoftDelete

Source Code on Github

ASP.NET Boilerplate Documentation