我在拒绝带有自相关表的 DataSet 时遇到问题。
首先,我在表中插入父行和子行。然后我从表对象中调用 RejectChanges 方法或从 DataSet 中调用相同的方法。RejectChagnes 方法抛出 RowNotInTableException。
这是演示这一点的代码(TestRejectChanges.zip):
DataSet dataSet = new DataSet();
//Parent row
DataSet.TABLERow parentRowOverDataSet = dataSet.TABLE.AddTABLERow(1, "Parent", null);
//Child row
dataSet.TABLE.AddTABLERow(2, "Child", parentRowOverDataSet);
//This line crash because the child row is detached before Rolback (in RejectChanges method code)
dataSet.TABLE.RejectChanges();
//Also crash
//foreach (DataSet.TABLERow row in dataSet.TABLE.ToList())
//{
// row.RejectChanges();
//}
//Also crash
//dataSet.RejectChanges();
我试图覆盖 DataTable 的 RejectChanges 但这个方法不是虚拟的。有没有办法使用 DataSet 的 RejectChanges 来做到这一点?