2014-02-20 53 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

(这个假设有在第一和最后一个名字至少一个字符)