当我在某些情况下添加行并更新行时,会出现并发冲突

时间:2019-05-08 09:49:45

标签: c# winforms sqldataadapter

我的设置很简单

  • 已绑定到BindingSource的DataGridView
  • BindingSource已绑定到数据表
  • DataTable由一个简单的adapter.Fill(table);
  • 填充

现在这很好用,但是从今天起,在某些情况下我会收到此错误。

  

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

我可以通过以下方式重现它

  1. 向DataGridView添加新行
  2. 使用adapter.Update(Table);
  3. 保存到数据库
  4. 添加另一行
  5. 更改两行中任何列的值
  6. 尝试使用adapter.Update(Table);
  7. 重新保存

现在发生错误。
我已经捕获了使用探查器发送到Sql Server的实际语句,该语句是这样的:

exec sp_executesql 
N'UPDATE [tblDamageRegion] SET [Remarks] = @Remarks WHERE (([DamageRegionID] = @Original_DamageRegionID))',
N'@Remarks nvarchar(1),@Original_DamageRegionID int',
@Remarks=N'1',@Original_DamageRegionID=NULL

如您所见,变量@Original_DamageRegionID为NULL
这将导致没有行被更新,因此出现上面的错误。

我的问题是,适配器怎么可能不填充此变量?

我在每次table.AcceptChanges();之后尝试了adapter.Update(Table);,但没有帮助
我在BindingSource.EndEdit();之前尝试过adapter.Update(Table);,但没有帮助

0 个答案:

没有答案