2016-03-07 37 views
0

我使用C#和Devart.Data.MySql更新數據庫表中的行。但我有例外Devart.Data.MySql:併發衝突:UpdateCommand影響了預期的1個記錄中的0個

併發衝突:在更新命令影響的預期的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); 
} 

之後我在這裏有關於併發衝突的例外。如果我使用標題的另一個值,它工作正常。它看起來像沒有一些時間戳或修改值,我不能執行更新命令與相同的值。爲什麼?

回答

0

它看起來像這樣的行爲是由設計,可以通過提供下列選項改變的是你的連接字符串:

Found Rows=true; 

該選項在7.0.25版本中引入的,因爲它指出here

相關問題