我想在 DataTable 中模拟触发器,以便在发生某些数据更改时更新我的 DataSet 。 为此,我打算利用 DataTable 事件,但后来我发现了Microsoft Handling DataTable Events发出的警告:
如果在引发 RowChanged 事件的 DataSet 中修改了数据,则可能会发生数据损坏。如果发生此类数据损坏,则不会引发任何异常。
所以,我认为将 RowChanged 事件用于我的任务是个坏主意。但是使用其他事件是否安全,例如 RowChanging ?或者可能有更好的方法来实现我的目标?
答案 0 :(得分:0)
我认为MSDN正在指出这一点,因为潜在的验证规则可能存在,例如密钥和密钥。唯一约束,通常是数据集的实际模式定义的一部分。所以你只需记住这一点。
RowChanging事件比RowChanged事件更为通用。它告诉您,行中某处发生了更改,但您不知道哪个列已更改。
您选择的事件取决于您想要的粒度。 RowChanged和ColumnChanged 是更精细的选项。
如果是 RowChanged :
一行已更改。该事件将行传递给您,以及一个 指示什么类型的操作(更改,插入等)的值 被执行。
如果是 ColumnChanged :
列中的值已更改。该事件传递了行和 列给你,以及建议的值。
另一种选择可能是DataTable.GetChanges Method。
调用数据集或数据表的GetChanges方法会返回一个新方法 仅包含已记录的数据集或数据表 改变。如果您只想获取特定记录 - 例如,仅 新记录或仅修改记录 - 您可以传递一个值 DataRowState枚举作为GetChanges方法的参数。