爲了提供恢復在數據庫表中發生的更改的能力,我已經在大量更改之前創建了DataTable的Clone()
。在決定取消更改之前,用戶有能力瀏覽多種表單。在過程結束時,如果他們選擇取消,我想將Clone()的數據更新回數據庫。 我不知道這是否有道理刪除已添加的行,然後添加回原來的clone()'d行,或者更新計劃要更新的行? 看來,如果我要更新原始行,我必須循環才能將行從克隆複製到原始行?還是有另一種方式?使用DataTable.Clone()保存並恢復對數據庫的更改
// Clone the original data
cloneDataTable = origDataTable.Clone();
cloneDataTable.ImportRow(dataRow);
// Later in the process, if I need to delete the row
dataRow.Delete();
tableAdapter.Update(dataRow);
// I was considering that I could add the cloned row back in this fashion
origDataTable.ImportRow(cloneDataTable.Rows[0]);
tableAdapter.Update(dataRow);
我可能混淆了問題,但我基本上是在尋找一系列插入後恢復原來的clone()'d的數據到數據庫的簡單和有效的方法/更新已經完成。
理想我想,因爲數據庫插入導致了一個序列值遞增,我想避免執行更新。
感謝您的幫助,並在必要時請向任何澄清。
設計就像它一樣。每個表單都會在整個過程中提交更改,所以我沒有選擇。 – McArthey
你仍然有選擇。即使您在不同時間和不同形式下對數據庫進行了更改,仍可以在單個事務的範圍內進行所有這些更改(不能將'use'塊語法與'ElVieejo'一起使用,但是這只是一個小小的方便,你要做的事情就是*準確地說*要使用什麼事務;我覺得有必要重新強調一下,使用DataTables滾動你自己的機制是不行的一個好主意,你扔掉15分鐘的工作(以便使用交易)... – MusiGenesis
...所以你可以花費更多的時間讓這個DataTable方法不能很好地工作 – MusiGenesis