我对现有的旧数据库使用EF数据库优先。几乎每个字段在数据库中都有一个maxlength值,我可以在.edmx文件中查看该值。实体框架数据库首先自动验证属性的最大长度
例如,字段CCSTATUS
是nvarchar(20)
。当用户输入超过20个字符时,它将清除ModelState.IsValid
,但会在db.SaveChanges()
上抛出DbEntityValidationException
。
对于我添加了DataAnnotations的属性,当它们未通过验证时,它们会添加模型错误,然后将其显示给用户,以便它们可以更正。我知道我可以将[MaxLength(n)]
属性添加到Model MetaData类中的所有属性,但是有没有办法让EF添加模型错误,而不是在值大于属性的最大长度时抛出DbEntityValidationException
?
编辑
感谢您的答案大家。我最终使用EF Power Tools反向工程师代码优先功能从我的数据库中生成Code First模型,其中包括适当的maxlength属性和其他必要的注释。
我不知道有什么简单的方法来做到这一点,但你可以检查这个[link](http://www.headspring.com/entity-framework-code-first-dbcontext-validation/),并且看看它是否有帮助 – Nilesh