数据集同步如何发生?

时间:2011-06-08 10:09:11

标签: ado.net dataset

我最近参加的一次采访中提到了这个问题。假设我们有一个数据集。我们知道它(数据集)在断开连接模式下工作。现在,我们通过使用dataadapter将数据库中的必要数据添加到数据集中并填充UI。 假设一个用户(比如user1)正在UI中进行一些更新,稍后将通过数据集保存到数据库,而其他一些用户(比如用户2)已经将数据修改到数据库中。

那么问题是数据集如何知道数据被修改的位置?那就是数据集中同步的方式?

换句话说,user1不知道user2修改了数据库中的某些记录。但不知何故,数据集需要更新相同的内容。怎么会发生这种情况?

由于

1 个答案:

答案 0 :(得分:0)

解决ADO中的乐观并发问题的一种方法 是锁定DataSet检索到的记录 编辑操作开始。这种策略被称为 悲观锁定。长时间锁通常导致 数据库性能不佳和争用问题,但在 应用程序无法容忍的情况 记录在更新时发生了变化,悲观 锁定可能是必要的。

使用ADO,使用悲观锁定相对容易 方案。在ADO.NET中,设置起来有点困难, 但你仍然可以使用悲观锁定 应用。但是,仅仅因为你可以做点什么 并不意味着你应该一直这样做 - 我的意思 解释只有在绝对必要时才能使用。

悲观锁定的基本步骤如下:

  1) Create a transaction with an IsolationLevel of RepeatableRead.

  2) Set the DataAdapter’s SelectCommand property to use the transaction you created.

  3) Make the changes to the data.

  4) Set DataAdapter’s Insert, Update, and Delete command properties to use the transaction you created.

  5) Call the DataAdapter’s Update method.

  6) Commit the transaction.