报错:System.Data.Entity.Infrastructure.DbUpdateException 更新条目时出错

背景

往数据库添加数据,前端验证通过的情况下,提交报错,程序停在了SaveChanges()这行,并报如上错误。

分析

猜想是提交的领域模型不符合数据库要求,但不知道具体哪里出错。网上查资料,有人发现这是"某些字段为空"而引起的错误。每个人面对的场景不一样,打断点调试,发现有一个属性的长度超出了数据库的要求。

出错的语句: 
userInfo.LoginPwd = EncryptHelper.GetMd5(userInfo.LoginPwd).Substring(10); 
本来是想对加密后的字符串截取前10位,却变成了从第10位开始截取,导致超出了数据库字段长度的上限。

修改如下: 
userInfo.LoginPwd = EncryptHelper.GetMd5(userInfo.LoginPwd).Substring(0, 10);

时间: 2024-11-06 23:38:50

报错:System.Data.Entity.Infrastructure.DbUpdateException 更新条目时出错的相关文章

MVC+EF 序列化类型为“System.Data.Entity.DynamicProxies.__的对象时检测到循环引用

用MVC+EF做简单查询时,返回json格式数据出现问题 原代码: public ActionResult JSon({ NorthwindEntities db = new NorthwindEntities(); Employees per = db.Employees.Where(u => u.EmployeeID == 1).FirstOrDefault(); return Json(per, JsonRequestBehavior.AllowGet); } 报错: 个人记录最简单而行之

EF 更新条目时出错。有关详细信息,请参见内部异常。

现象:使用EF新增记录时,一直报上述异常,网上说是值为空.主键外键未设等原因导致,但是改正这些情况下问题依然 解决过程:异常中有一句(请参见内部异常),一直都没有当回事,后来实在没办法就静下心来看了看,内容异常内容如下: InnerException: System.Data.SqlClient.SqlExceptionHResult=-2146232060Message=Implicit conversion from data type nvarchar to varbinary is no

Exception→"Source":"EntityFramework" "Message" :"更新条目时出错。有关详细信息,请参阅内部异常。"

给一个数据库中类型为"datetime"的列赋值为 "DateTime.MinValue"...... 而"DateTime.MinValue"=={0001/1/1 0:00:00} But"datetime"取值范围{1753-01-01到9999-12-31 00:00:00 到 23:59:59.997 3.33毫秒} 这就比较尴尬了... 只要把那个字段的值改为在datetime范围内的就可以了... 我是这么改的

更新条目时出错

解决方案: 在catch中写入throw ex.InnerException; 抛出具体异常信息,发现是新增时有个外键数据为null,新增时写入默认值就ok了.

关于System.Data.Entity.Core.MetadataException错误

发布ASP.NET MVC到IIS后出现错误: 1 System.Data.Entity.Core.MetadataException: Schema specified is not valid. Errors: 2 SysModel.ssdl(2,2) : error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Ma

System.Security.SecurityException The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception

[15/08/19 00:03:10] [DataManager-7292-ERROR] System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'System.Data.Entity.Internal.AppConf

序列化类型为“System.Data.Entity.DynamicProxies..."对象时检测到循环引用

这是因为EF外键引起的序列化问题. 解决方案: context.Configuration.ProxyCreationEnabled = false; 这里我用的是一个基类控制器用于被继承 返回EF实例前加上这段代码就可以了 1 //用于被继承 2 public class BaseController : Controller 3 { 4 public CucuCarEntity db 5 { 6 get 7 { 8 //从当前线程中获取该对象 9 CucuCarEntity db = Cal

报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败

使用MVC和EF,在保存数据的时候报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性. 日志记录中,出错的地方在result += db.SaveChanges();所在行,尝试如下操作: →使用try...catch捕获→在catch所在行打上断点,运行,F11,对ex变量添加监视→在EntityValidati

报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState"

报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState" 原因一: using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.Entity; 是否引用了System.Data.Entity   是则:db.Ent