C# 4.0 拒绝数据表上的更改时出现唯一的持续错误

C# 4.0 拒绝数据表上的更改时出现唯一的持续错误,c#-4.0,datatable,datarow,C# 4.0,Datatable,Datarow,当我拒绝表上的更改时,我遇到了datatable问题。我在下面创建了一个示例来演示这个问题: DataTable table = new DataTable(); table.Columns.Add("Name", typeof(string)); table.Columns.Add("Last_Name", typeof(string)); table.Columns.Add("Male", typeof(Boolean)); foreach (DataColumn column in ta

当我拒绝表上的更改时,我遇到了datatable问题。我在下面创建了一个示例来演示这个问题:

DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Last_Name", typeof(string));
table.Columns.Add("Male", typeof(Boolean));

foreach (DataColumn column in table.Columns)
{
    if (column.ColumnName == "Name")
    {
        column.Unique = true;
    }
}

DataRow row;

row = table.NewRow();
row["Name"] = String.Format("Steve");
row["Last_Name"] = String.Format("Smith");
row["Male"] = true;

table.Rows.Add(row);

table.AcceptChanges();
所以在这个阶段,我有一个DataTable,它有一个唯一的列约束,表中有一行

我现在删除该行:

row.Delete();
这会将行状态设置为“已删除”

在这个阶段,我意识到我犯了一个错误,想再次添加行。因此,我再次创建新行并将其添加到DataTable:

row = table.NewRow();
row["Name"] = String.Format("Steve");
row["Last_Name"] = String.Format("Smith");
row["Male"] = true;

table.Rows.Add(row);
在此阶段,我的DataTable内容处于以下状态:

表。行[0]。行状态已删除

表。行[1]。添加了行状态

现在,我对整件事改变了主意,想回到我是如何开始的,所以我称之为拒绝改变:

table.RejectChanges();
执行此操作时,我收到以下错误:

Column 'Name' is constrained to be unique.  Value 'Steve' is already present.
我知道有两行具有相同的值,但我认为拒绝更改会导致这种情况,因为行状态不同

你知道我该怎么解决这个问题吗

在我的实时代码中,我使用它在两个网格之间移动行(比如允许用户选择哪些列是可见的)

我正在Visual Studio 2012中使用C#4.0


提前谢谢

看一下这里:(重复)嗨,蒂姆。谢谢,一切都好了。微软那边的差劲工作!