2012-12-30 73 views
1

我正在为我的客户开发购物车应用程序,并试图找到一种策略,以确保在购买过程中不会发生碰撞。购物车应用程序策略

例如,如果库存中剩下五件物品,并且两个客户正好同时进行购买,库存应该剩下三个项目,而不是四个。看来在购买之前我必须知道,目前的库存量是多少。另外,我需要一种方法来判断是否有人抓住了最后一件商品,即使他们还没有购买。

我应该使用什么策略/模式来确保满足这些条件?我正在用SQL Server开发一个.net mvc应用程序。

回答

2

啊并发。 您有多个需要考虑的事情在这里:如果您存储库存

  1. 并从中减去,并在一个单独的更新再写一遍你离开你盘点开放问题
  2. 如果您的更新是单交易当前量,减少库存,你可以让你的库存变为负

您的更新必须:

  1. 启动TR应答
  2. 通过对其进行选择并读取库存来锁定有问题的行。处理手头不够的情况。
  3. 如果有足够的库存更新的行 3A健全测试
  4. 提交或回滚

有多种方法可以做到这一点,但上面的应该工作正常此处的交易过程中检查库存。 您可以通过开始事务通过proc中的新事务范围对象或服务器端在您的代码中启动事务。

+0

2.如果我正在使用LINQ-to-sql或者它有什么关系,我该如何锁定该行? – user1790300

+0

另外,这将如何影响另一位顾客在设置锁定时购买同一产品? – user1790300

+0

使用transactionscope对象并不重要。另一位顾客的交易将等到交易完成。 –