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中添加標識的隱藏字段即可,在編輯的時候將原數據的標識綁定上,后台提交數據時,重新賦值到實體。即可提交成功。