【发布时间】:2019-01-27 01:31:26
【问题描述】:
当我使用 Visual Studio 2017 生成 MVC.NET 时,它会生成一些表 AspNetUsers、AspNetRoles 等...
如果查看已经生成的Id,都在nvarchar(128)中,值就是GUID。
我的第一反应是将其更改为 int,但我认为 Microsoft 必须有充分的理由使用 GUID 而不是 int。但是谷歌搜索,我找不到答案。
现在,我明白了为什么它将所有 id 存储为 nvarchar(128),这是因为并非所有数据库都具有字段类型 GUID。但我找不到使用 GUID 和 int 的好处。
进一步搜索互联网,我找到了这篇文章:GUIDs as PRIMARY KEYs and/or the clustering key。现在,听起来 GUID 可能是一个糟糕的选择。
我还处于早期阶段,所以我仍然是时候从 GUID 更改为 int。但是使用 int 代替 GUID 是否有任何真正的缺点(和/或好处)?
感谢您的帮助...
【问题讨论】:
-
Asp.net 身份提供者类与身份数据库交互,以方便开箱即用的身份管理和身份验证。为什么他们使用 GUID 作为主要键列,只有 MS 可以回答这个问题。将其更改为 INT 是可能的,但不值得。如果数据库中有几千个用户,那么 GUID 和 INT 之间的性能实际上并没有太大变化。
-
您可以阅读this 了解更改身份数据库架构所涉及的工作量。
标签: sql-server asp.net-mvc asp.net-identity guid