使用Rowchanged或其他事件在ADO.NET DataTable中创建触发器



我想在 dataTable 中模拟触发器,以更新我的 dataset 当出现对数据的某些更改时。为此,我打算使用 dataTable 事件,但随后我从Microsoft处理数据台事件中找到了此警告:

如果在数据集中修改了数据,则可能会发生数据损坏,从而从中增加了 rowchanged 事件。如果发生此类数据损坏,则不会引起例外。

所以,我想使用 rowchanged 事件是一个坏主意。但是,使用其他事件(例如 rowchanging (安全吗?或者可能有更好的方法可以实现我的目标?

我相信MSDN正在指出这一点,因为可能存在的潜在验证规则,例如keys&通常是数据集实际模式定义的一部分的唯一约束。因此,您只需要记住这一点。

Rowchanging事件比Rowchanged事件更一般。它告诉您,该行中的某个地方正在发生更改,但是您不知道哪个列已更改。

您选择的事件归结为您想要的颗粒状。行变和列的更详细的选项。

rowchanged 的情况下:

一行已更改。活动将行传递给您,以及 值表示哪种类型的动作(更改,插入等(是 正在执行。

columnchanged 的情况下:

列中的值已更改。活动通过了行, 列给您,以及提议的值。

另一个选项可能是datatable.getChanges方法。

调用数据集或数据表的getchanges方法返回新的 数据集或数据表仅包含已有记录 改变了。如果您只想获得特定的记录,例如 新记录或仅修改的记录 - 您可以从 DataRowState枚举作为GetChanges方法的参数。

最新更新