我正在开发使用ef处理数据库的asp.net mvc应用程序。我需要更改一个具有StringLength(1000)
属性并映射到数据库中nvarchar(1000)
列的字符串属性。
由于最近的需求,我更新了数据库以使用nvarchar(max)
,并从model类中删除了StringLength(1000)
属性。
问题是。每次我想插入这个属性长度大于1000的新实体时,我都会收到一个验证错误,说它只能是1000个字符。当它降低时,一切都按预期工作。
字段必须是长度最大的字符串或数组类型。
“1000”。
我不知道这个错误是从哪里来的。没有触发器或存储过程。我也尝试使用属性MaxLength
或StringLenght(int.maxInt)
但得到了错误。也没有使用fluent api的附加配置。
编辑:不幸的是,不重新构建解决方案并不是一个愚蠢的问题。我现在试了两次(+清理)问题就解决了。
解决方案:因此出于某种原因,在项目内部使用的同一实体有另一个模型类。它的性质完全没有单一的属性。在将maxlength添加到这个属性之后,它就可以工作了。
最佳答案
鉴于无法重新生成数据库,解决方案是实现部分类并对字段使用自定义验证。不是很干净,但应该有用。
注意:在这种情况下,它们可能已经是一个部分类
请参考this MSDN Article
关于c# - 更新数据库和更改模型后, Entity Framework 验证错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36282998/