标识2如何允许重复的名称进行逻辑删除

时间:2015-04-22 16:05:19

标签: asp.net-mvc entity-framework-4 asp.net-identity-2

如何让Identity 2允许多个具有相同名称的用户?

在我的应用程序中,我不想从数据库中物理删除用户。所以我在Users表中添加了一个删除标志。

然后我删除了需要UserName的索引才是唯一的。并创建了过滤后的索引IX_USER_DELET_FG_Flase

DropIndex("dbo.USERS", "UserNameIndex ON dbo.USER");    
Sql("CREATE UNIQUE INDEX IX_USER_DELET_FG_Flase ON dbo.USERS (UserName) WHERE DeleteFg = 0");

当deleted标志为false时,索引检查名称是否唯一。

这仍然不允许我创建一个与已删除用户同名的用户。通过查看源代码Identity Source,有一个私有方法可以检查名称是否唯一。有没有办法禁用此验证?

或者我是否需要覆盖一些Identity方法来检查delete标志为false的用户。

之前有没有人这样做过,是做了很多工作还是更好的方法呢?

我害怕如果我开始做这件事,我最终会走到一个大兔子洞里

1 个答案:

答案 0 :(得分:1)

你对兔子洞是正确的 - 如果你开始挖洞,你最终会得到很多代码。执行逻辑删除的简单方法是在用户名末尾附加一些后缀,因此不会发生重复。

我认为后缀也应包含一些随机值,因此您可以多次删除同一个用户。