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