爲什麼ADO.NET會拋出一個DBConccurencyException,當我嘗試更新已被另一個進程刪除的行時,而不是僅忽略已刪除的行?ADO.NET DBConcurrencyException - 嘗試更新已刪除的行
ADO.NET中有沒有可用的選項來忽略這個事實?
我使用SQLCommandBuilder與ConflictOption設置爲ConflictOption.OverwriteChanges。
爲什麼ADO.NET會拋出一個DBConccurencyException,當我嘗試更新已被另一個進程刪除的行時,而不是僅忽略已刪除的行?ADO.NET DBConcurrencyException - 嘗試更新已刪除的行
ADO.NET中有沒有可用的選項來忽略這個事實?
我使用SQLCommandBuilder與ConflictOption設置爲ConflictOption.OverwriteChanges。
您可以使用DataViewRowState枚舉僅選擇修改後的行。
var rowsToUpdate =
dataTable.Select(null, null, DataViewRowState.ModifiedOriginal);
這是如何工作的?在更新之前,ADO.NET是否立即查詢該行? – Rookian 2011-05-12 14:25:39
ado.net在更新之前檢查狀態。如果該行已被刪除,則無法再訪問該行 – 2011-05-12 15:50:07
這是設計。爲什麼不只是處理這個異常並優雅地繼續呢? – Darbio 2011-05-12 12:26:12
你有假設的來源:)? – Rookian 2011-05-12 12:32:09
http://msdn.microsoft.com/en-us/magazine/cc163924.aspx查看圖3中的代碼... – Darbio 2011-05-12 12:33:51