2016-03-29 205 views
2

我正在使用EF来处理数据库的ASP.NET MVC应用程序。我需要更改一个字符串属性,该属性具有StringLength(1000)属性并被映射到数据库中的nvarchar(1000)列。更新数据库和更改模型后的实体框架验证错误

由于最近的需求,我更新了数据库以使用nvarchar(max),并从模型类中删除了StringLength(1000)属性。

问题是。每次我想插入具有此属性长度大于1000的新实体时,我都会收到验证错误,说它只能包含1000个字符。当它较低时,一切都按预期工作。

该字段必须是字符串或数组类型,其最大长度为 '1000'。

我不知道这个错误来自哪里。没有触发器或存储过程。我也尝试使用属性MaxLengthStringLenght(int.maxInt),但得到了错误。也没有与Fluent API的额外配置。编辑:不幸的是,它看起来不像愚蠢的问题,不重建解决方案。我现在尝试了两次(+清理),问题依然存在。

解决方案:所以出于某种原因,在内部使用的项目中存在另一个模型类。它的属性完全没有单一属性。在将MaxLength添加到单个属性后,它可以工作。

+3

你确定你不只是使用在执行程序集的旧的DLL? –

+1

要么你没有清理和重建解决方案,因此正在使用过时的DLL,或者你在其他地方定义了'StringLength(1000)'。 – user1666620

+1

看看这个。可能这会帮助你。 http://stackoverflow.com/questions/5414611/entity-framework-validation-confusion-maximum-string-length-of-128 –

回答

1

鉴于您无法重新生成数据库,解决方案是实施部分类并为您的字段使用自定义验证。它不是那么干净,但它应该工作。

注意:他们可能已经是一个分部类在这种情况下

请参考this MSDN Article