2015-04-22 39 views
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的用戶。

有沒有人以前做過這個,是很多工作還是更好的方法來做到這一點?

我怕如果我開始這樣做,我會最終下一個大兔子洞

回答

1

您是關於兔子洞正確的 - 如果你開始挖的時候,就會有一個最終很多代碼就是爲了這個目的。執行邏輯刪除的簡單方法是在用戶名尾部添加一些後綴,以避免重複。

我在想後綴也應該包含一些隨機值,所以你可以多次刪除同一個用戶。

+0

而不是使用隨機值,我認爲時間戳作爲後綴可能會更好,沒有重複的風險,除非你的用戶是時間旅行者。它也給你一些歷史的感覺 –

+0

@JeffFinn這確實是一個更好的解決方案,我沒有想到這一點。 – trailmax