2

如何处理 asp.net 4.5 Web 应用程序(VS2012 和 C#、SQL Server)的并发问题

例如:
我的场景是用户可能有机会永远无法处理队列项目。请参阅以下内容:

  1. 用户 A 打开队列项 (a),仔细查看
  2. 用户 B 打开队列项目 (a),处理它而不查看
  3. 用户 A 决定处理 (a),但它被锁定,所以跳转到项目 (b)
  4. 用户 C 打开队列项 (b),立即处理它
  5. 用户 A 决定处理 (b),但它再次被锁定
  6. 同样的事情永远发生在用户 A 身上

这对于用户 A 来说并不理想,即使这种可能性的百分比可能非常小

我在 C# 代码级别以及 SQL Server 存储过程级别使用事务。我还利用 ADO.net 与数据库进行通信

我的问题是:

  • 您认为创建事务会解决并发问题吗?
  • 我猜 ADO.net 已经内置了并发预防?我对么 ?
  • 除了创建事务和使用 ADO.net 之外,我还需要做任何其他事情来防止并发问题吗?
4

1 回答 1

1

简而言之:您可以使用称为时间戳列的传统方法来解决并发问题。

表的时间戳列可用于确定自上次读取表以来表行中的任何值是否已更改。本文介绍了一种在 Microsoft SQL Server 2005 中使用表的时间戳列进行乐观并发控制的方法。

要获得有关此方法的更详细说明,请参阅本文

此外,您还可以查看使用 SQL 时间戳实现乐观并发的分步实现指南。

于 2013-01-04T04:56:49.467 回答