我在使用DataTable时发现了一个bug。
我向DataTable添加了一个主键列,然后向该表添加了一行数据,删除了该行数据,再次添加具有相同主键的行数据。这个操作是有效的。但是当我尝试调用RejectChanges()
时,却出现了ConstraintException
,提示该值已经存在。
以下是示例:
var dataTable = new DataTable();
var column = new DataColumn("ID", typeof(decimal));
dataTable.Columns.Add(column);
dataTable.PrimaryKey = new [] {column };
decimal id = 1;
var oldRow = dataTable.NewRow();
oldRow[column] = id;
dataTable.Rows.Add(oldRow);
dataTable.AcceptChanges();
oldRow.Delete();
var newRow = dataTable.NewRow();
newRow[column] = id;
dataTable.Rows.Add(newRow);
dataTable.RejectChanges(); // This is where it crashes
我认为既然行已被删除,就不应该引发异常(因为行处于已删除状态,不违反约束)。我能做些什么来解决这个问题吗?非常感谢您的帮助。