1
如何获取标识2以允许具有相同名称的多个用户?标识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");
索引检查名称是唯一的,当删除标志是假的。
这仍然不允许我创建一个与删除用户同名的用户。从源代码Identity Source看,有一个私有方法检查名称是否唯一。有没有办法禁用此验证?
或者我需要覆盖一些Identity方法来检查删除标志为false的用户。
有没有人以前做过这个,是很多工作还是更好的方法来做到这一点?
我怕如果我开始这样做,我会最终下一个大兔子洞
而不是使用随机值,我认为时间戳作为后缀可能会更好,没有重复的风险,除非你的用户是时间旅行者。它也给你一些历史的感觉 –
@JeffFinn这确实是一个更好的解决方案,我没有想到这一点。 – trailmax