我正在使用MVC3,EF5,C#,Sql Server 2008 R2。
我正在使用成员资格提供程序和我自己的一些“组织”表以及成员资格表的链接表。
当我在我的应用程序中取消帐户时,我会进行软删除,这对我的桌子来说很好。但是,我不确定我应该对相关帐户的会员记录做些什么。理想情况下,我也希望软删除记录。
问题在于,当我尝试使用与已取消帐户相同的用户名创建新帐户时,我收到“用户名已存在。请输入其他用户名”。类型错误。
显然我可以很难删除会员用户,但这意味着我很难删除我不希望做的应用程序中的所有相关记录。
思考。
感谢。
答案 0 :(得分:2)
您可以编写自定义成员资格提供程序并覆盖DeleteUser
方法并执行您需要的任何逻辑。
答案 1 :(得分:1)
默认成员资格提供程序需要唯一的用户名,您可以为用户名添加前缀,以便多个用户可以具有相同的名称,或者在软删除时修改用户名以包含一些前缀,以便可以重复使用。如果我是诚实的,那么这两者都不是特别好,但除非你添加自己的“显示名称”字段,否则你会遇到约束。
答案 2 :(得分:1)
您正在使用使用存储过程的旧版ASP.Net Membership Provider。这对您的案例来说是个好消息,因为它比使用Entity Framework的新New Universal Provider更容易修改。
最简单的方法是创建一个表来跟踪已删除的用户。 (您可能已根据您的问题创建了它。)
然后你想修改 aspnet_Users_DeleteUser 存储过程
同时将 aspnet_Membership 表的 IsApproved 列更新为false,以防止再次使用该用户名登录。