這裏的情形:當LINQ更新失敗時會發生什麼?
- 工序1(P1) - 不同的平面文件讀取一個後果是刪除或添加照片的URL到數據庫表以指示這些需要下載
- 過程2 (P2) - 查看需要下載的照片URL,實際執行下載,然後將記錄標記爲已下載
P1和P2有時根據要處理的數據量同時運行,有時P1會刪除記錄P2已經加載並準備下載。
這實際上並不是一個問題 - 如果圖片下載但不再需要,這些圖片網址的性質使得它最終可能在晚些時候被使用,而且空間也不用擔心。所以,唯一的問題是,如果P2選擇一組記錄,然後其中的一些記錄停止LINQ更新過程中存在的錯誤是由的SubmitChanges()類似拋出:
「1 4個更新失敗「。
我的問題是:此更新失敗時發生了什麼?據我所知,有3種可能性:
- 整個事務回滾
- 該交易不會回退,可能被更新了
- 該交易不會回滾所有記錄第一條記錄已更新,但第二條記錄失敗,因此其餘更新未嘗試。
的實際通話情況如下 - 沒有ConflictMode集:
this.SomeDataContext.SubmitChanges();
這將如何調用被改變,使得可以執行任何更新會和其他人忽略?請問下面做的伎倆:
this.SomeDataContext.SubmitChanges(ConflictMode.ContinueOnConflict);
我沒有看到在MSDN的任何指示參數少調用默認ConflictMode:
http://msdn.microsoft.com/en-us/library/bb292162.aspx
..though有跡象在單參數呼叫指示默認是FailOnFirstConflict:
http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.submitchanges.aspx