c# - 处理 asp.net C#/SQL Server 应用程序的并发问题

标签 c# sql-server-2008 asp.net-4.5

我如何处理 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 之外,我是否需要做任何其他事情来防止并发问题?

最佳答案

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

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/

相关文章:

sql - 生成日期范围之间的日期

javascript - 如何在代码隐藏中访问 session 变量

entity-framework - 如何在 Entity Framework 6中执行存储过程而不返回结果?

sql - 如何跟踪列中发生的更改数量? T-SQL-SQL Server

asp.net - AspNetSession 布局渲染器不起作用

asp.net-mvc-2 - 将 IIS7 更新到 .NET 4.5 时出现 ASP.NET MVC 2 站点问题

exception-handling - 我应该如何在 WebAPI 的 Controller 构造函数中处理异常?

c# - 如何将多个 TextReader 串在一起?

c# - 如何进行转换 SQL 内部连接查询与 Entity Framework

c# - OpenCvSharp 访问冲突