【问题标题】:Entity framework validation error after updating database and changing model更新数据库和更改模型后的实体框架验证错误
【发布时间】:2016-03-29 11:28:16
【问题描述】:

我正在开发使用 EF 处理数据库的 ASP.NET MVC 应用程序。我需要更改一个具有StringLength(1000) 属性并映射到数据库中nvarchar(1000) 列的字符串属性。

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

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

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

我不知道这个错误来自哪里。没有触发器或存储过程。我也尝试使用属性MaxLengthStringLenght(int.maxInt),但得到了错误。 Fluent API 也没有额外的配置..

编辑:不幸的是,它看起来不像不重建解决方案的愚蠢问题。我现在尝试了两次(+清理),问题仍然存在。

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

【问题讨论】:

  • 您确定您在执行程序集中不只是使用旧的 dll 吗?
  • 要么您没有清理和重建解决方案,因此正在使用过期的 DLL,或者您在其他地方定义了 StringLength(1000)
  • 看看这个。可能这会对你有所帮助。 stackoverflow.com/questions/5414611/…
  • 即使你删除数据库并重建它,它也不起作用?
  • @Mr.B 不幸的是,我不能简单地删除数据库。对于一个我不认为这个项目首先使用代码(我只是在做一些扩展和维护)它也有大量的数据,重新开始意味着重新调整它以进行测试。但是主要问题是我需要适合生产的修复程序,重建整个数据库不是。

标签: c# asp.net-mvc database entity-framework


【解决方案1】:

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

注意:在这种情况下,它们可能已经是部分类

请参考this MSDN Article

【讨论】:

    猜你喜欢
    • 2015-09-21
    • 2013-06-06
    • 2013-06-05
    • 2011-04-28
    • 2011-04-26
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多