【问题标题】:How to delete an ApplicationUser in Asp.Net MVC 5 with Entity Framework (EF6)?如何使用实体框架(EF6)在 Asp.Net MVC 5 中删除 ApplicationUser?
【发布时间】:2016-11-20 20:20:36
【问题描述】:

我正在努力删除我的应用程序中的 ApplicationUser。我不介意硬删除,但这给了我很多挑战。用户可以创建其他用户可以评论的帖子。如果其他用户对用户的帖子发表了评论,则无法硬删除该用户,因为删除尝试级联到帖子(被现有 cmets 阻止)。

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

我已经尝试搜索处理用户删除的既定方法,但我似乎找不到任何方法(除了快速文章,如“如何向您的用户添加“IsDelete”属性,这还不够含义的详细信息)。那么有没有适当的方法来处理用户删除?似乎最好的方法是开始用级联弄脏我的手,但我不确定从哪里开始。

【问题讨论】:

  • 在显示用户的一条帖子时,您想向用户显示什么?
  • “已删除”代替作者。帖子内容仍然可以显示
  • 所以我想它们实际上应该被检索,但只显示它们的名字以外的东西。

标签: c# asp.net asp.net-mvc entity-framework


【解决方案1】:

我强烈建议查看已在 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

【讨论】:

    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多