问题简化:
我有一个带有一些数据表的数据集...我有一个绑定到其中一个数据表的 Winforms DataGrid。用户通过DataGrid将一些行粘贴到所述数据表中,比如说3行;
所有三行现在都有它们的 RowState = DataRowState.Added。
我现在开始一个 sqlserver 事务。
然后调用 dataAdapter1.Update(dataSet1) 将行更新到 SqlServer。第 1 行 .. 行 2 .. 行 3 .. sqlserver 级别的错误(按设计,我强制执行唯一索引)
检测到此错误后,我回滚 sqlserver 事务。
我还尝试使用 Dataset1.RejectChanges() 和/或 Datatable1.RejectChanges() 来“回滚”数据表/数据集的更改。
问题不是 .RejectChanges() 工作方式我设想的方式。我的数据表现在有两行(row1,row2),其 RowState = DataRowState.Unchanged; row3 完全消失了。
我想要发生的是,当我回滚 sqlserver 事务时,数据表中的所有 3 行在调用 dataAdapter1.Update() 方法之前保持在相同的状态。
(原因是用户可以查看绑定的 DataGrid 中的错误,采取纠正措施,然后再次尝试更新)。
有什么想法吗?即我正在寻找相当于在 ADO 数据表级别回滚状态的东西。