为什么 EF Core 3.1 StringLength 属性加倍 SQL 列长度

Why EF Core 3.1 StringLength Attribute doubles SQL column length

我正在使用 EF 核心 3.1 代码优先方法。当我为数据模型参数指定 [StringLength(51)] 时,等效的 SQL 列长度指定为 nvarchar(102)。为什么会翻倍? 我应该怎么做才能在 SQL 列中获得相同的最大长度?

注意:MS SQL 服务器是我的后端。

我想你可以使用

[MaxLength(51)] // nvarchar(51)
public string Email{ get; set; }

感谢@Igor 的评论。糟糕的是,它在 SQL 中的长度也相同。加倍是指以字节为单位的大小,即每个字符都是两个字节。以下查询有助于理解它,因此将其发布为对像我这样的人有帮助的答案。

select COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH       
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='Table_Name'```