C#生成唯一的Guid(不存在于数据库的表中)

标签 c# asp.net-mvc database primary-key guid

我有一个主键类型为 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/

相关文章:

c# - 使用 EF Core 和内存数据库进行单元测试

c# - 如何将上午/下午添加到日期时间

asp.net-mvc - SaveChanges 上的 DbUpdateException 不断抛出

javascript - 将数据从 javascript 传递到 MVC Controller

mysql - atk4 数据库表 ID

c# - 使用 RX 在不同时间触发事件?

c# - 固定后更改 TileId?

c# - 在不使用语句的情况下使用 Entity Framework 的缺点?

database - postgresql 序列中的漏洞/差距是否对性能有害?

database - 什么是最好的灵活性,为什么?使用数据库 View 、数据库表、存储过程。和表中的对象