捕获和处理TableAdapter上的并发冲突

时间:2011-08-16 11:17:08

标签: vb.net visual-studio-2010 ado.net concurrency tableadapter

我使用TableAdapter连接到我的数据库表。

当我执行Update并且其他人更新了同一行时,我收到并发冲突错误。正如所料。

所以在这一点上,我给用户提供了保存选项或取消更改

的选项

如果他们取消我可以只执行Fill来获取数据的更新副本,但如果他们想要覆盖怎么办?如何实际强制保存数据覆盖数据库中保存的数据?

2 个答案:

答案 0 :(得分:3)

如果您使用SQLCommandBuilder生成更新语句,则设置 CommandBuilder.ConflictOption = ConflictOption.OverwriteChanges;  然后再次执行Update()。

答案 1 :(得分:0)

右键单击表适配器,单击“在数据集设计器中编辑查询”。

在“数据集设计器”窗口中,选择“TableAdapter”并转到“属性”。

在属性中,展开Update语句,然后转到CommandText属性。在条件更新命令中,删除所有条件并仅保留主键列。例如:

UPDATE customer
SET column1 = @column1, column2 = @column2
WHERE pk_column = @pk_column

现在并发异常不再出现,因为此查询将仅基于主键覆盖数据。