架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 43|回复: 2

[资料] 对一个或多个实体的验证失败。有关详细信息...

[复制链接]
发表于 7 天前
zu
对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性。
修改:

SaveChanges前先关闭验证实体有效性(ValidateOnSaveEnabled)这个开关

可以在 Controller层这样关闭


  1. db.Configuration.ValidateOnSaveEnabled = false;
  2. int count = db.SaveChanges();
  3. db.Configuration.ValidateOnSaveEnabled = true;
复制代码
或者在 DAL层,对整个系统关闭

  1. /// <summary>
  2. /// 创建 EF上下文 对象,在线程中共享 一个 上下文对象
  3. /// </summary>
  4. /// <returns></returns>
  5. public DbContext GetDbContext()
  6. {
  7.     //从当前线程中 获取 EF上下文对象
  8.     DbContext dbContext = CallContext.GetData(typeof(DBContextFactory).Name) as DbContext;
  9.     if (dbContext == null)
  10.     {
  11.         dbContext = new IZhanShiEntities();
  12.         dbContext.Configuration.ValidateOnSaveEnabled = false;
  13.         //将新创建的 ef上下文对象 存入线程
  14.         CallContext.SetData(typeof(DBContextFactory).Name, dbContext);
  15.     }
  16.     return dbContext;
  17. }
复制代码
关闭之后,不报这个错了,转而报另外要给错误:

SqlException (0x80131904): 将截断字符串或二进制数据。 语句已终止。

这才是问题所在   可以说 是你在操作数据库的时候,有字段超过了数据库里面 你字段的限制大小

查看代码,果然有字段太长了。


错误原因:

1. 非空列未插入值错误

2. 多个表间外键列长度不一样        

3. ef上下文对象db为空         

4. ef上下文设置属性为 db.Configuration.ValidateOnSaveEnabled = false;

5. 内容长度超过列最大长度


我的错误原因,是因为名称长度大小超出了限制。

QQ截图20200213103807.png




上一篇:我发布的百度网盘链接失效,请问大神怎么办?
下一篇:.net core bootstrap-fileinput上传文件
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 7 天前
我很想知道你的动力是什么,一个人撑着一个论坛。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 7 天前
zncliving 发表于 2020-2-13 11:17
我很想知道你的动力是什么,一个人撑着一个论坛。

兴趣
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-2-20 23:41

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表