更新数据集时发生并发冲突

时间:2014-03-18 22:23:48

标签: c#

定义:
XMLStream:XML Stream包含一些行信息;

目前,即时通讯正面临一个名为"并发冲突"虽然我做了一些调试工作,但仍无法找到原因。所以,请帮助我,谢谢你。

1:通过读取xml流来填充数据集:  xmlDataSet.ReadXML(XMLStream);

2:从数据集中获取dataTable:  DataTable xmlTable = xmlDataSet.Tables[OriTable.TableName];

3:修改dataTable的每一行信息

foreach(DataRow xmlRow in xmlTable.rows)
{
    DataRow targetRow = SearchRow(xmlRow); // search the xmlrow from the OriTable, and return it, in here, we assume it exists.

    targetRow.ClearError();
    targetRow.BeginEdit();
    foreach(DataColumn xmlCol in xmlTable.columns)
    { 
        if( OriTable.Columns.Contains(xmlCol.ColumnName)
        {
            // Modifying targetRow
        }
    }
    targetRow.EndEdit();
}

if( // no error flag has been set)
{
    OriTable.DataSet.UpdateTable(); // this is where the error appears
}

请帮帮我,谢谢

PS:OriTable的定义: ID:int not null, 名称:nchar(40)not null default'', 描述:nchar(90)null, 主键(id)

1 个答案:

答案 0 :(得分:0)

尝试使用' for'循环而不是'foreach'环。在一个' foreach'循环你通常无法修改你正在迭代的集合的项目..

相关问题