Identity 2 如何允许逻辑删除的重复名称

Identity 2 how to allow duplicate Names for logical deletes

如何让 Identity 2 允许多个用户同名?

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

然后我删除了要求 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");

索引在删除标志为false时检查名称是否唯一

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

或者我是否需要覆盖一些身份方法来检查删除标志为假的用户。

有没有人以前做过这个,这是很多工作还是更好的方法?

我担心如果我开始这样做,我会陷入一个大兔子洞

您关于兔子洞的说法是正确的 - 如果您开始挖掘它,您最终会得到大量为此目的编写的代码。进行逻辑删除的简单方法是在用户名末尾附加一些后缀,这样就不会发生重复。

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