我们正在将代码库从 EF6.2 升级到 EF Core 2.2,我们的团队发现基于字符串的 Identity key 的默认值将生成一个主键列
-
EF 6.2 (SQL Server) 中的
nvarchar(128)
- EF Core 2.2 (SQL Server) 中的
nvarchar(450)
这个决定背后的原因是什么?
最佳答案
SQL Server 允许索引最大为 900 字节。 nvarchar 中的字符为 2 个字节。 2 * 450 = 900。我们(EF 团队)担心 EF6 中多个列上的主键。在 EF Core 中,我们意识到只有指定的字符才会被索引(“var”代表不同的长度),因此我们可以将所有字符设置为 450 个,只要键中所有列的字符总数少于 450 个,它仍然可以工作.
关于c# - 为什么 EF Core 2.2 将默认主键设置为 nvarchar(450),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57602167/