我如何处理 asp.net 4.5 web 应用程序(VS2012 和 C#、SQL Server)的并发问题
例如:
我的场景是用户可能永远无法处理队列项目。请参阅以下内容:
- 用户A打开队列项(a),仔细查看
- 用户B打开队列项(a),不查看就处理了
- 用户 A 决定处理 (a),但它已被锁定,因此跳转到项目 (b)
- 用户C打开队列项(b),立即处理
- 用户A决定处理(b),但是又被锁了
- 同样的事情永远发生在用户A身上
这对用户 A 来说并不理想,即使这种可能性的百分比可能非常小
我在 C# 代码级别和 SQL Server 存储过程级别使用事务。我还利用 ADO.net 与数据库进行通信
我的问题是:
- 您认为创建事务会解决并发问题吗?
- 我猜 ADO.net 已经内置了并发预防功能?我说得对吗?
- 除了创建事务和使用 ADO.net 之外,我是否需要做任何其他事情来防止并发问题?
最佳答案
简而言之:您可以使用称为时间戳 列的传统方法解决并发问题。
The timestamp column of a table can be used to determine whether any value in the table row has changed since the last time the table was read. This article describes a way to use the timestamp column of a table for optimistic concurrency control in Microsoft SQL Server 2005.
要获得此方法的更详细解释,请关注这篇文章
此外,您还可以查看 Implementing Optimistic Concurrency with SQL Timestamps 的分步实现指南。 .
关于c# - 处理 asp.net C#/SQL Server 应用程序的并发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14150791/