在一个应用程序中是否可能创建相同的GUID?
Guid id = Guid.NewGuid();
从技术上来说,是的。一个创建的 GUID 看起来像这样:
26de36b7-76f5-4f17-8f9d-44eb429f151b
这意味着32个字符可以是字母(26种可能性)或数字(10种可能性)。
这意味着每个位置有36种可能性,总共有36^32种可能性,大约为60 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000。
这意味着如果您每毫秒创建2 000 000 000 000 000 000 000 000 000 000 000 000 000个Guid(这是不可能的),平均而言将会有一个GUID被重复创建两次,而其他所有的GUID都是唯一的。
因此,在实践中,是不会出现相同的GUID的 ;)
Guid.NewGuid()
创建重复guid的风险是否很高,那么答案是否定的。以下内容摘自维基百科:Guid g1 = new Guid("21EC2020-3AEA-1069-A2DD-08002B30309D");
Guid g2 = new Guid("21EC2020-3AEA-1069-A2DD-08002B30309D");
Guid.NewGuid()会始终创建一个全球唯一的Guid,而不仅仅是在单个应用程序内部。
我刚刚遇到了这个问题。我的数据库表中有7个项目。从我的程序中,我添加了一个新实例,使用Guid.NewGuid()
作为其ID。我收到了一个DbUpdateException
告诉我该ID与现有的某个ID相同。再试一次,它就可以正常工作了。