如何在Microsoft.AspNet.Identity中使用具有IsDelete属性的ApplicationUser软删除

时间:2016-06-09 06:49:49

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

我们在项目中使用Microsoft.AspNet.Identity v1.0.0.0。我们必须从数据库中永久地删除我们的应用程序用户(仅使它们成为IsDeleted = true)。每件事都适用于此,但是当我们想要创建具有相同用户名的新用户时,它也会检查IsDeleted。我们希望在这种情况下它不会检查IsDeleted用户。

有没有办法覆盖此场景的公共虚拟Task CreateAsync功能?

您的帮助对我非常有帮助。 提前致谢 阿希什

1 个答案:

答案 0 :(得分:0)

如果您想释放用户名以供他人使用,您可以在删除用户时进行修改。

让它成为独特的东西,或许:"{user}_deleted_{guid}"。用户的电子邮件仍然是完整的,您可以使用相同的电子邮件拥有多个用户条目,这样就不会有问题。

此外,最好存储DeletedDate属性而不是IsDeleted属性。它在功能上是等效的(只检查它是否为空),但它也免费为您提供一些附加信息!将其与DeletedBy列结合起来,以跟踪是谁做的。

完成后,您可以创建一个自定义UserStore,它不会在结果中返回已删除的用户。您可以在此问题Adding soft delete to Identity users table

上详细了解此问题