【发布时间】:2015-08-21 07:23:21
【问题描述】:
我试图了解为什么新的 ASP.NET 标识表停止使用 Guid(唯一标识符类型)作为键 - 而是现在使用 nvarchar(128),但仍保留 Guid 作为 string。 ..
这不是很大的浪费吗? (uniqueidentifier 只是 2 个 integers 与整个 Guid 作为 36 个字符 string)
我怀疑实体框架可能对此负责......
改回唯一标识符键是否安全?
谁能告诉我使用 36 个字符串有什么好处?
【问题讨论】:
-
uniqueidentifier是 16 个字节,而不是 8 个。字符串的大小不取决于它的长度,所以它实际上总是整个 256 个字节(nvarchar 每个“字符”有两个字节) ,对于任何索引和关联都是一样的。我想目标是灵活性,但这对我来说似乎是一个糟糕的权衡...... -
谢谢,由于某种原因,我有 Guid = 2 int 卡在我的脑海里......但我认为新的 SQL 服务器只分配正在使用的 nvarchar 字符数,而不是全部 128 如果只使用了 36 个 - 但仍然是一个很大的浪费......
-
我知道
nvarchar(max)可以做到这一点(即使这样也有一个最小长度 IIRC)和类似的,我还没有探索它是如何工作的。有可能他们解决了所有这些问题,但是我们不会简单地在任何地方使用nvarchar(max)吗? :D -
我发现了另一个类似的讨论:stackoverflow.com/q/23891446/809357 - 那里有一些很好的答案。
标签: asp.net entity-framework entity-framework-6 asp.net-identity