我有一个主键类型为 Guid 的表。在我的 MVC 应用程序中,我想向该表添加一条记录。我知道创建新 Guid 的 Guid.newGuid()
。这很好用,但我有一个顾虑。如何确保创建的 Guid 是唯一的(数据库中尚不存在)?有没有办法通过比较现有值来生成它以确保新的 guid 在数据库记录中是唯一的?
最佳答案
guid 生成技术的全部目的是它不需要。该算法将生成一个全局唯一值,即使它无法访问之前生成的所有其他 GUID。
具体来说,该算法只是生成一个大的随机数。 GUID 中的数据位如此之多,以至于其中两个具有相同值的几率无限小。小到可以忽略不计。
有关更详细的分析,请参阅 Eric Lippert's blog on the subject . (特别是 part three 。)
请注意,因此,使用 GUID 作为唯一标识符将比仅使用数字标识符占用更多的数据库空间。任何体面的数据库都会有一个特殊的列类型,专门设计为它将填充的唯一标识符;这样的列将能够确保唯一性,同时使用比 GUID 少得多的空间。
关于C#生成唯一的Guid(不存在于数据库的表中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195863/