2014-02-20 55 views
-1

我正在註冊過程中收集用戶的名字和姓氏。我想使用名字和姓氏生成唯一的註冊碼,而無需在數據庫中檢查所有現有的代碼。 John Cano可以生成類似JC76AS1的地方,其中JC來自John Cano。根據姓名和姓氏生成唯一的註冊碼

什麼可能是最好的方式來生成代碼部分76AS1沒有檢查數據庫的現有代碼,並試圖不創建一個重複的註冊碼?

+1

個人而言,我會使用一個GUID(或者附加一個GUID,如果你確實需要JC部分)。如果您無法檢查碰撞,那是獲取唯一標識IMO的最安全的方法之一。並且_no_,不要嘗試截斷GUID以縮短代碼長度。 –

+0

如果你可以保留一個櫃檯,那麼很容易。 JC00001,JS00002。 –

+0

是的,但一個計數器可以是一個非常簡單的模式來打破 – Devsined

回答

2

我不確定是否有可能做到這一點,而無需在數據庫中檢查它或在內存中維護已經生成的註冊碼的引用。

您可以使用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

(這個假設有在第一和最後一個名字至少一個字符)