-1
我正在註冊過程中收集用戶的名字和姓氏。我想使用名字和姓氏生成唯一的註冊碼,而無需在數據庫中檢查所有現有的代碼。 John Cano可以生成類似JC76AS1
的地方,其中JC
來自John Cano。根據姓名和姓氏生成唯一的註冊碼
什麼可能是最好的方式來生成代碼部分76AS1
沒有檢查數據庫的現有代碼,並試圖不創建一個重複的註冊碼?
我正在註冊過程中收集用戶的名字和姓氏。我想使用名字和姓氏生成唯一的註冊碼,而無需在數據庫中檢查所有現有的代碼。 John Cano可以生成類似JC76AS1
的地方,其中JC
來自John Cano。根據姓名和姓氏生成唯一的註冊碼
什麼可能是最好的方式來生成代碼部分76AS1
沒有檢查數據庫的現有代碼,並試圖不創建一個重複的註冊碼?
我不確定是否有可能做到這一點,而無需在數據庫中檢查它或在內存中維護已經生成的註冊碼的引用。
您可以使用GUID並將其附加到FirstName的第一個字符和姓氏的第一個字符。但它會很長,但獨特。
string firstName = "John";
string lastName = "Cano";
string uniqueRegistrationCode = string.Format("{0}{1}-{2}", firstName[0], lastName[0], Guid.NewGuid());
,你還是會回到這樣的:
JC-3f507a3c-cd80-482d-b3be-c8002856926e
(這個假設有在第一和最後一個名字至少一個字符)
個人而言,我會使用一個GUID(或者附加一個GUID,如果你確實需要JC部分)。如果您無法檢查碰撞,那是獲取唯一標識IMO的最安全的方法之一。並且_no_,不要嘗試截斷GUID以縮短代碼長度。 –
如果你可以保留一個櫃檯,那麼很容易。 JC00001,JS00002。 –
是的,但一個計數器可以是一個非常簡單的模式來打破 – Devsined