为什么 EF Core 2.2 将默认主键设置为 nvarchar(450)

Kur*_*oro 6 c# entity-framework ef-core-2.2

我们正在将我们的代码库从 EF6.2 升级到 EF Core 2.2,我们的团队发现基于字符串的标识键的默认值将生成一个主键列

  • nvarchar(128) 在 EF 6.2 (SQL Server) 中
  • nvarchar(450) 在 EF Core 2.2 (SQL Server)

这个决定背后的原因是什么?

bri*_*lam 11

SQL Server 允许最多 900 字节的索引。nvarchar 中的字符为 2 个字节。2 * 450 = 900。我们(EF 团队)担心 EF6 中多列的主键。在 EF Core 中,我们意识到只对指定的字符进行索引(“var”表示不同的长度),因此我们可以将所有字符设置为 450,并且只要键中所有列的总字符数小于 450,它仍然可以工作.