为什么DataAnnotation MaxLength(8192)不起作用?

时间:2015-09-28 12:16:52

标签: c# entity-framework data-annotations

我正在使用C#中的Entity Framework 6.1.3开发一个项目,我想设置一些二进制数据的最大限制。

[MaxLength(8192)]不起作用这是一个错误吗?似乎有一个上限。

[MaxLength(4096)]这令人惊讶吗?

我是否正确使用DataAnnotations?

//[MaxLength(4096)] <-- this works
[MaxLength(8192)]
public Byte[] MediaData {get; set;}

结果:

MediaData = c.Binary()

预期:

MediaData = c.Binary(maxLength: )

也试过了。

[MaxLength(8192)]    // this does not work either
public string Text {get; set;}

我可以手动修复它但是让我感到恼火的是DataAnnotations不能自动运行。您对DataAnnotations的经验/建议是什么?

1 个答案:

答案 0 :(得分:2)

来自MSDN的

,请看粗体部分:D

表示字符串部分:

  

nvarchar [(n | max)]   可变长度的Unicode字符串数据。    n定义字符串长度,可以是1到4,000 之间的值。 max表示最大存储大小为2 ^ 31-1个字节(2 GB)。存储大小(以字节为单位)是输入数据的实际长度的两倍+ 2个字节。 nvarchar的ISO同义词是国家字符变化和国家字符变化。

和二进制部分:

  

varbinary [(n | max)]   可变长度的二进制数据。 n可以是1到8,000之间的值。 max表示最大存储大小为2 ^ 31-1个字节。存储大小是输入数据的实际长度+ 2个字节。输入的数据长度可以是0个字节。 varbinary的ANSI SQL同义词是二进制变量。

所以这里实际上有一个限制。