1. 程式人生 > >解決System.Data.Entity.Infrastructure.DbUpdateConcurrencyException:“儲存區更新、插入或刪除語句影響到了意外的行數(0)

解決System.Data.Entity.Infrastructure.DbUpdateConcurrencyException:“儲存區更新、插入或刪除語句影響到了意外的行數(0)

EF在更新或儲存資料時出現System.Data.Entity.Infrastructure.DbUpdateConcurrencyException:“儲存區更新、插入或刪除語句影響到了意外的行數(0)異常:

EF在更新或儲存資料時出現這種錯誤一般是前臺往後臺傳送AJAX序列化的格式不正確或者後臺在新增或者更改的實體類資料之中存在空值現象。比如說當你網資料庫中更新一條資料時其中你所更新的這條資料的一個屬性值為null那麼在儲存的時候就會出現這種錯誤。

上面的情況是我遇到的,不過我度孃的時候也看到過人家遇到的其他情況:

1,資料併發情況下,多人客戶端對同一條資料同時操作,如果是先delete,再update,那麼,一定是會出現以上錯誤,反之,如果是先update再delete,完全不成問題,詳見。。。。走馬觀花的部落格 搜尋標題中的異常資訊。

2,對於模型中,建立了併發標識欄位,timestamp,此時,進行資料編輯的時候,一定要注意,頁面上一定要帶上該欄位值。否則必然出現以上錯誤,原因很簡單,如果不帶上這個標識,更新資料 上下文中會檢索併發標識,此時找不到相應實體資訊的併發標識,可以理解……可以說提升到了併發的高度了吧,找不到同條資料,問題便會出現。

那麼解決方法就有了,view中新增標識的隱藏欄位即可,在編輯的時候將原資料的標識繫結上,後臺提交資料時,重新賦值到實體。即可提交成功。

第二種情況詳見:https://www.cnblogs.com/Tmc-Blog/p/4954153.html