2017-04-17 80 views
1

在ADO.Net數據表中的觸發器,我想模擬觸發在DataTable中時一定變化數據發生更新我數據集。 我要利用用於此目的的DataTable事件,但後來我發現從微軟Handling DataTable Events這樣的警告:如果數據是在DataSet中從中RowChanged事件修改可發生創建使用RowChanged或其他事件

數據損壞被提出。如果發生這種數據損壞,則不會產生異常。

所以,我認爲這是一個壞主意,用RowChanged事件對我的任務。但使用其他事件安全嗎,如RowChanging?或者可能有更好的方法來實現我的目標?

回答

0

我相信MSDN正在指出這一點,因爲潛在的驗證規則可能存在,如密鑰&的唯一約束,通常是數據集實際模式定義的一部分。所以你只需要牢記這一點。

RowChanging事件比RowChanged事件更普遍。它告訴你一個改變發生在某一行,但你不知道哪一列已經改變。

您選擇的事件取決於您希望的粒度。 RowChanged和ColumnChanged更細化的選項。

的情況下RowChanged

甲行已被更改。該事件將該行傳遞給您,以及 值,該值指示正在執行的操作類型(更改,插入等)爲 。

的情況下ColumnChanged

一列中的值已經改變。該事件會傳遞給您的行和 列以及建議的值。

另一個選項可能是DataTable.GetChanges Method

調用數據集或數據表的GetChanges方法返回一個僅包含已 改變記錄的新 數據集或數據表。如果只想獲取特定記錄(例如,只有 新記錄或僅修改記錄),則可以將 DataRowState枚舉中的值作爲參數傳遞給GetChanges方法。

+0

謝謝你的解釋。如果可能發生的唯一對數據的破壞正在突破一些限制,我可以處理它。 無論如何,我可能會將我的代碼移動到ColumnChanged事件。 – AlexVB

+0

@AlexVB如果答案解決了您的問題,請將問題標記爲已回答,以便其他人也可以從中受益。謝謝 –

相關問題