EF6更新 数据出现 System.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0)....异常

先还原一下问题出现的场景;

首先,获取 数据倒view显示,并绑定到文本框显示,点击提交时候,出现上面异常信息;

数据更新错误,通常包含以下几种:

1,DbEntityValidationException

2,DbUpdateConcurrencyException(以上错误将被该异常捕获)

情况一:往往是数据格式不正确,比如,int32类型不可为空,却绑定null值,等等

情况二:也是本次要重点说的情况,可能情况有以下几种

    1,数据并发情况下,多人客户端对同一条数据同时操作,如果是先delete,再update,那么,一定是会出现以上错误,反之,如果是先update再delete,完全不成问题,详见。。。。走马观花的博客 搜索标题中的异常信息。

    2,就是本次要说的,也是本人遇到的问题,对于模型中,创建了并发标识字段,timestamp,此时,进行数据编辑的时候,

一定要注意,页面上一定要带上该字段值。否则必然出现以上错误,原因很简单,如果不带上这个标识,此时,更新数据 上下文中会检索并发标识,此时找不到相应实体信息的并发标识,可以理解……可以说提升到了并发的高度了吧,找不到同条数据,问题便会出现。

那么解决方法就有了,view中添加标识的隐藏字段即可,在编辑的时候将原数据的标识绑定上,后台提交数据时,重新赋值到实体。即可提交成功。

  

EF 更新数据出现 System.Data.Entity.Infrastructure.DbUpdateConcurrencyException: 异常的更多相关文章

  1. ef添加数据时出错 System.Data.Entity.Infrastructure.DbUpdateConcurrencyException”类型的异常

    找半天才找到 ef添加数据时出错原因:数据库表中没有主键 ,就算表中有自增列 Added方法也会报错: -        this._db.SaveChanges() “this._db.SaveCh ...

  2. system.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0) 问题

    页面控件没有做限制.提交后还可以继续点击,造成了在短时间内的多次请求.查看日志两次错误在200ms之内. 错误信息 system.Data.Entity.Infrastructure.DbUpdate ...

  3. Mysql EF 触发器生成主键id 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项 ;System.Data.Entity.Infrastructure.DbUpdateConcurrencyException

    http://stackoverflow.com/questions/24725261/how-to-use-a-custom-identity-column-in-sql-with-entity-f ...

  4. System.Data.Entity.Infrastructure.DbUpdateException

    异常描述:   捕捉到 System.Data.Entity.Infrastructure.DbUpdateException  HResult=-2146233087  Message=无法更新 E ...

  5. code first System.Data.Entity.Infrastructure.CommitFailedException: An error was reported while committing a database transaction but it could not be determined whether the transaction succeeded

    System.Data.Entity.Infrastructure.CommitFailedException: An error was reported while committing a da ...

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

    背景 往数据库添加数据,前端验证通过的情况下,提交报错,程序停在了SaveChanges()这行,并报如上错误. 分析 猜想是提交的领域模型不符合数据库要求,但不知道具体哪里出错.网上查资料,有人发现 ...

  7. .net mvc System.Web.Optimization 、System.Data.Entity.Infrastructure找不到

    在MVC4的开发中,如果在App_Start目录下BundleConfig.cs类没有找不到引用System.Web.Optimization,可以使用程序包管理控制台进行安装到使用的项目 打开 工具 ...

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

    用MVC+EF做简单查询时,返回json格式数据出现问题 原代码: public ActionResult JSon({ NorthwindEntities db = new NorthwindEnt ...

  9. 【model模型传入view的数据类型错误】传入字典的模型项的类型为“System.Data.Entity.Infrastructure.DbQuery`1[MapScience.PovertyAlleviation.Web.Models.Qu

    出现这个问题的原因是控制器中传给view的数据类型与View中设置的model类型不一致导致,比如控制器返回的IList类型的,而你在View里面model设置的是IEnumerable<> ...

随机推荐

  1. rest开发

    http://www.mkyong.com/webservices/jax-rs/download-json-from-jax-rs-with-jaxb-resteasy/ http://blog.j ...

  2. SysErrorMessage 函数和系统错误信息表

    在看 API 文档时, 我们经常见到 GetLastError; 它可以返回操作后系统给的提示.但 GetLastError 返回的只是一个信息代码, 如何返回对应的具体信息呢?FormatMessa ...

  3. android 判断程序是首次(第一次)进入

    很多时候,我们需要判断用户是不是第一次进入程序,以决定是不是给用户一些操作提示. 这种功能的实现,说到底还是将数据(一个标志位)存储起来,下次进入程序的时候读取数据进行判断. 我这里只给出一种较简单的 ...

  4. 精确到时分秒的jQuery插件例子

    demo.html: <!DOCTYPE html> <html> <head>  <meta http-equiv="Content-Type&q ...

  5. bzoj3166

    首先不难想到穷举次大数然后我们只要找到满足这个数是次大数的最大区间即可显然答案只可能是这两种[LL[i]+1,R[i]-1]和[L[i]+1,RR[i]-1]L[i]表示这个数ai左侧第一个比它大的数 ...

  6. Node.js权威指南 (2) - Node.js中的交互式运行环境——REPL

    2.1 REPL运行环境概述 / 102.2 在REPL运行环境中操作变量 / 102.3 在REPL运行环境中使用下划线字符 / 122.4 在REPL运行环境中直接运行函数 / 122.5 在RE ...

  7. 【转】Eclipse使用git最简易流程

    原文网址:http://www.cnblogs.com/ZhangWanFan/p/3993733.html git有诸多好处,网上都说的很清楚了,在这里我不再赘述.对于我来说,私下里想做一些项目,而 ...

  8. UISlider的使用

    UISlider是一个用来调节的滑块,可以通过滑块来设置程序的某些属性 构造方法:     imgSlider = [[UISlider alloc] initWithFrame:sliderRect ...

  9. 【转载】Manacher算法

    本文原创:http://www.cnblogs.com/BigBallon/p/3816890.html只为了记录学习,不为抄袭!http://www.felix021.com/blog/read.p ...

  10. hdu 4474 大整数取模+bfs

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4474 (a*10+b)%c = ((a%c)*10+b%c)%c; 然后从高位开始枚举能填的数字填充, ...