如何防止.NET中的数据库中的数据并发保存

时间:2014-09-04 11:06:39

标签: asp.net .net vb.net

我在测试我的应用程序时遇到的一个问题

从两个不同的浏览器我打开我的应用程序并打开同一页面,我正在做一些操作 然后从两个浏览器同时请求更新数据。两个浏览器的数据都保存在数据库中,这是错误的。

我已经做了一些代码来防止这个问题,比如首先检查数据库中是否存在值。但是这种验证不能防止数据的并发保存。

请帮帮我。我需要解决这个问题 谢谢你

1 个答案:

答案 0 :(得分:1)

您可以通过使用乐观或悲观锁定来防止并发错误保存数据

  

乐观锁定

  • 我们可以通过3种主要方式实现乐观锁定 在.NET中: -

    1. Datasets: - 默认情况下,数据集实现乐观锁定。他们 在更新之前检查旧值和新值。

    2. Timestamp Data type: - 在表格中创建时间戳数据类型 并在更新时检查旧时间戳是否等于新时间戳。

    3. Check old and new value: - 获取值,进行更改和 在做最后更新时检查旧值和当前值 数据库中的值是相等的。如果他们不相等,那么回滚或 else提交值

  

悲观锁定

  • 我们可以通过在SQL中指定“IsolationLevel”来进行悲观锁定 服务器存储过程,ADO.NET级别或使用事务范围 对象。

有关更多信息,请查看: http://www.codeproject.com/Articles/114262/ways-of-doing-locking-in-NET-Pessimistic-and-opt