2011-05-12 51 views
1

爲什麼ADO.NET會拋出一個DBConccurencyException,當我嘗試更新已被另一個進程刪除的行時,而不是僅忽略已刪除的行?ADO.NET DBConcurrencyException - 嘗試更新已刪除的行

ADO.NET中有沒有可用的選項來忽略這個事實?

我使用SQLCommandBuilderConflictOption設置爲ConflictOption.OverwriteChanges

+1

這是設計。爲什麼不只是處理這個異常並優雅地繼續呢? – Darbio 2011-05-12 12:26:12

+0

你有假設的來源:)? – Rookian 2011-05-12 12:32:09

+0

http://msdn.microsoft.com/en-us/magazine/cc163924.aspx查看圖3中的代碼... – Darbio 2011-05-12 12:33:51

回答

1

您可以使用DataViewRowState枚舉僅選擇修改後的行。

var rowsToUpdate = 
      dataTable.Select(null, null, DataViewRowState.ModifiedOriginal); 
+0

這是如何工作的?在更新之前,ADO.NET是否立即查詢該行? – Rookian 2011-05-12 14:25:39

+0

ado.net在更新之前檢查狀態。如果該行已被刪除,則無法再訪問該行 – 2011-05-12 15:50:07

相關問題