如何让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的用户。
之前有没有人这样做过,是做了很多工作还是更好的方法呢?
我害怕如果我开始做这件事,我最终会走到一个大兔子洞里
答案 0 :(得分:1)
你对兔子洞是正确的 - 如果你开始挖洞,你最终会得到很多代码。执行逻辑删除的简单方法是在用户名末尾附加一些后缀,因此不会发生重复。
我认为后缀也应包含一些随机值,因此您可以多次删除同一个用户。