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

黑郎

我们正在将代码库从EF6.2升级到EF Core 2.2,我们的团队发现基于字符串的身份密钥的默认值将生成带有以下内容的主键列:

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

做出此决定的原因是什么?

Bricelam

SQL Server允许索引最大为900字节。nvarchar中的字符为2个字节。2 * 450 =900。我们(EF团队)担心EF6中多个列上的主键。在EF Core中,我们意识到只对指定的字符进行了索引(“ var”用于变化的长度),因此我们可以将所有字符最多进行450个,只要键中所有列的字符总数少于450个,它就仍然可以工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么EF Core 2.1仅为2个FK添加1个索引?

为什么 EF Core 不断向迁移文件添加阴影属性?像 AgencyId1、AgencyId2 等

为什么会出现错误:使用EF和AutoFac的.net core 2中的“无法访问已处置的对象”?

在 ef core 2 中处理连接的最佳方法是什么

抽象 ef core 2 dbContext

.NET CORE 2 EF包含

使用ID和外键的EF core 2复合主键

为什么我的EF Core迁移会忽略模型的OnDelete设置?

为什么 EF Core 没有设置自定义注释?

从 EF Core 2 迁移到 EF Core 3

从 EF Core 2 迁移到 EF Core 3 ... 无法翻译

ef core 多 2 多映射

在Entity Framework Core 2中取消设置主键

首先使用EF Core 2.0代码将2个外键作为主键

[Core 4] [Logical / Core 2]是什么意思?

为什么我的ASP.NET Core 2方法不能返回TwiML?

为什么H2数据库在Springboot应用程序中使用Hibernate Core

为什么 Enumerable.Zip() 的 2 参数重载在 .NET Core 中而不是在 .NET Standard 中?

为什么要在ASP.Net Core 2 MVC中登录以下更改密码

为什么在iOS上使用Caffe2或Core-ML代替LibTorch(.pt文件)?

为什么没有EF Core OfType(Type type)方法?

为什么 EF Core 2.0 似乎生成了错误的值?

ASP.NET Core 2 MVC + EF Core 2或Angular 5

在 EF Core 2 中使用 Contains as (NOT) EXIST 在 EF Core 3.1 中不再有效

(AWS / EC2 / EBS)为什么对于根设备,“终止时删除”默认设置为true?

为什么将Ubuntu的grub2菜单设置为默认的grub菜单?有可能改变吗?

为什么 ~-(2 + "2") 是 21?

在EF Core 2中使用单表名称

EF Core 2跨数据库迁移