Devart.Data.MySql:并发冲突:UpdateCommand影响了预期的1条记录中的0条

时间:2016-03-07 13:12:32

标签: mysql .net database

我使用C#和Devart.Data.MySql来更新数据库表中的行。但我有例外

  

并发冲突:UpdateCommand影响了预期的1的0   记录

尝试使用相同的值更新行时。例如,我有两列 Id(主键)和标题的表数据。我在此表中有一行 Id = 222,Title = 4444 。然后我尝试使用相同的值更新此行:

using (var conn = new MySqlConnection(Cs))
{
    conn.Open();

    //update command
    var uc = new MySqlCommand(@"UPDATE data SET Title = @Title WHERE Id = @Id", conn);
    uc.Parameters.Add("@Title", MySqlType.VarChar, 50, "Title");
    uc.Parameters.Add("@Id", MySqlType.VarChar, 50, "Id");

    //create adapter
    var adapter = new MySqlDataAdapter("", conn)
    {
        UpdateBatchSize = 100,
        UpdateCommand = uc
    };
    adapter.TableMappings.Add("Table", "data");

    //create table
    var table = new DataTable("data");
    DataColumn col = table.Columns.Add("Id", typeof(string));
    col.Unique = true;
    table.PrimaryKey = new[] { col };
    table.Columns.Add("Title", typeof(string));

    //create dataset
    var ds = new DataSet();
    ds.Tables.Add(table);

    DataRow row = table.NewRow();
    row["Id"] = "222";
    row["Title"] = "4444";
    table.Rows.Add(row);
    row.AcceptChanges();
    row.SetModified();

    adapter.Update(ds);
}

之后,我在这里遇到了关于并发冲突的异常。如果我使用标题另一个值它工作正常。看起来没有一些时间戳或修改后的值,我无法执行具有相同值的更新命令。为什么呢?

1 个答案:

答案 0 :(得分:0)

看起来这种行为是设计使然可以通过提供以下选项来更改您的连接字符串:

Found Rows=true;

此选项在版本7.0.25中引入,注意here