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

标签 c# entity-framework ef-core-2.2

我们正在将代码库从 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/

相关文章:

c# - 正则表达式替换每个换行符

c# - 将 Ctrl+Up 发送到窗口

c# - 如何使用 Entity Framework 使用 DTO 更新数据库中的实体

c# - Entity Framework 插入多对多创建重复数据

.net - Entity Framework 代码首先使用时间戳类型

c# - `Assembly.GetType(name)` 什么时候返回 `null` ?

c# - C#:远程主机上的套接字ReceiveAsync和SendAsync出现问题

c# - 缺少列的 Entity Framework Core 默认值

c# - 使用 EF Core 脚手架 Oracle 数据库失败并出现登录被拒绝错误

c# - "The type mapping for ' Instant ' has not implemented code literal generation"分割实体时