Guid.NewGuid()。GetHash code()为DB [英] Guid.NewGuid().GetHashCode() for DB

查看:1278
本文介绍了Guid.NewGuid()。GetHash code()为DB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这将是可靠的使用作为ID数据存储(SQL Server)的?

我会用一个GUID,但我preFER的数值。

解决方案
  

这将是可靠的使用作为ID数据存储(SQL Server)的?

没有。 GUID是128位,但散列codeS是32位。因此,有必要的碰撞。这可能是不可能的,你曾经遇到的一个,但你不能保证永远不会遇到的。

您想要的可靠性什么是保证你永远不会遇到冲突。如果你坚持要用 Guid.NewGuid()。GetHash code()那么你需要添加逻辑来检测碰撞。的GUID确实有优势(和缺点),但没有更多的信息,我会建议使用自动增量 INT 列。尤其是当你说你想要一个数字专栏中,我会倾向于使用身份

Would this be reliable for using as an ID for data storage(SQL Server)?

I would use a guid but I prefer a numeric value.

解决方案

Would this be reliable for using as an ID for data storage(SQL Server)?

No. GUIDs are 128-bit but hashcodes are 32-bit. Therefore, there are necessarily collisions. It may be unlikely that you ever encounter one, but you are not guaranteed to never encounter one.

What you want for reliability is a guarantee that you never encounter a collision. If you insist on using Guid.NewGuid().GetHashCode() then you need to add logic to detect collisions. GUIDs do have advantages (and disadvantages) but without additional information I would suggest using an auto-incrementing int column. Especially as you say you want a numeric column I would lean towards using an IDENTITY.

这篇关于Guid.NewGuid()。GetHash code()为DB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆