【发布时间】:2012-09-05 13:37:47
【问题描述】:
在.NET Framework 4.5 中,System.Guid 表示一个全局唯一标识符。我应该使用 alyaws Guid 类作为架构中的唯一标识符吗?我应该在哪种情况下使用它?哪种情况我不应该?
谁能详细解释一下这种情况?
【问题讨论】:
标签: .net guid uniqueidentifier .net-4.5
在.NET Framework 4.5 中,System.Guid 表示一个全局唯一标识符。我应该使用 alyaws Guid 类作为架构中的唯一标识符吗?我应该在哪种情况下使用它?哪种情况我不应该?
谁能详细解释一下这种情况?
【问题讨论】:
标签: .net guid uniqueidentifier .net-4.5
这很模糊。通常需要一个“唯一标识符”来标记数据。无需您的帮助,数据库引擎已经非常擅长此操作,请始终确保首先利用它们的功能。
生成一个唯一的数字很简单:比前一个多一个。魔鬼在细节中,前一个是什么?在很多情况下,您不想在进程会话结束后恢复编号,因此一个简单的变量就可以了。 System.Guid 的价值在于它可以帮助您避免在您关心时必须解决存储问题。以产生难以言说的为代价。
【讨论】:
我觉得这个名字很有说服力。如果您需要某些东西是全球唯一的,以便消除所有歧义,请使用 Guid。如果您需要一个项目仅在其对等项中是唯一的,请使用简单的东西,例如串行主键。
串行主键的唯一主要优点是 (1) 支持几乎所有现有存储介质,(2) 口头交流简单,以及 (3) 存储大小。
话虽如此,如果 ID 永远/很少需要手动传达/键入,并且存储不是最重要的问题(例如在与主要对象相比分类法可以忽略不计的文档库中),则不是不使用 Guid 的好理由。
【讨论】: