指定MaxLength时,实体框架使用nvarchar(max)

sre*_*moh 3 c# sql-server entity-framework entity-framework-6

我已经MaxLength使用EF流畅的api 指定了一个文本字段为4096以限制其长度:

this.Property(p => p.MyText).HasMaxLength(4096).IsRequired();
Run Code Online (Sandbox Code Playgroud)

但由于某种原因在SQL Server中,该列成为nvarchar (max).

仅供测试,如果我指定2048以确保SQL Server得到更新

this.Property(p => p.MyText).HasMaxLength(2048).IsRequired();
Run Code Online (Sandbox Code Playgroud)

这种方式是有效的.

所以我的问题为什么EF设置sql nvarchar (max)MaxLength(4096)

Den*_*nis 5

我认为这是SQL Server的限制.msdn

可变长度的Unicode字符串数据.n定义字符串长度,可以是1到4,000之间的值.