为什么 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'```
我正在使用 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'```