0

我正在使用 MVC3、EF5、C#、Sql Server 2008 R2。

我将 Membership Provider 与我自己的一些“组织”表结合使用,并带有指向成员表的链接表。

当我在我的应用程序中取消帐户时,我会进行软删除,这对我的表来说很好。但是,我不确定我应该如何处理相关帐户的会员记录。理想情况下,我也想软删除记录。

问题是,当我尝试使用与已取消帐户相同的用户名创建新帐户时,我收到“用户名已存在。请输入不同的用户名”。类型错误。

显然我可以硬删除会员用户,但这意味着我很难删除我的应用程序中我不希望这样做的所有相关记录。

想法。

谢谢。

4

3 回答 3

2

您可以编写自定义成员资格提供程序并覆盖该DeleteUser方法并执行您需要的任何逻辑。

于 2013-08-29T14:47:49.157 回答
1

默认会员提供者需要一个唯一的用户名,您可以在用户名前加上一些前缀,以便多个用户可以使用相同的名称,或者在软删除时修改用户名以包含一些前缀,以便可以重复使用。老实说,两者都不是特别好,但除非您添加自己的“显示名称”字段,否则您会受到约束。

于 2013-08-29T14:53:00.583 回答
1

您正在使用使用存储过程的旧版 ASP.Net Membership Provider。这对您的情况来说是个好消息,因为它比使用实体框架的新的新通用提供程序更容易修改。

最简单的方法是创建一个表来跟踪已删除的用户。(您可能已经根据您的问题创建了它。)

在此处输入图像描述

然后你想修改aspnet_Users_DeleteUser存储过程

  • 将 UserId 插入 DeletedUsers 表而不是删除用户。
  • 将用户名和电子邮件更改为在末尾附加 GUID(以便具有相同用户名和电子邮件地址的用户可以再次注册)

还将 aspnet_Membership表的IsApproved列更新为 false 以防止再次使用该用户名登录。

于 2013-08-29T15:33:59.793 回答