Asp.net mvc 3 购物车应用策略

Asp.net mvc 3 购物车应用策略,asp.net-mvc-3,sql-server-2008,shopping-cart,Asp.net Mvc 3,Sql Server 2008,Shopping Cart,我正在为我的客户开发一个购物车应用程序,并试图找到一种策略来确保在购买过程中不会发生冲突 例如,如果库存中还有五件物品,而两个客户恰好同时购买了一件物品;库存应该是剩下的三个项目,而不是四个。似乎我必须在购买之前知道当前的库存是什么。此外,我需要一种方法来判断是否有人抢走了最后一件物品,即使他们还没有购买 我应该使用什么策略/模式来确保满足这些条件?我正在用SQL Server开发一个.net mvc应用程序。Ah并发。 这里有很多事情要考虑: 如果您存储库存并从中减去,然后在单独的更新中再次写

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

例如,如果库存中还有五件物品,而两个客户恰好同时购买了一件物品;库存应该是剩下的三个项目,而不是四个。似乎我必须在购买之前知道当前的库存是什么。此外,我需要一种方法来判断是否有人抢走了最后一件物品,即使他们还没有购买

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

Ah并发。 这里有很多事情要考虑:

  • 如果您存储库存并从中减去,然后在单独的更新中再次写入,那么您的库存数量将面临问题
  • 如果您的更新是将库存减少到当前金额的单个事务,则您可以使库存变为负数
  • 您的更新必须:

  • 启动交易
  • 通过对有问题的行执行选择并读取清单来锁定该行。处理手头不足的情况
  • 如果有足够的库存,则更新行 3a测试期间检查库存的健全性
  • 提交或回滚事务
  • 有多种方法可以做到这一点,但上述方法在这里应该可以很好地发挥作用。
    您可以通过新的transactionscope对象在代码中启动事务,也可以通过begin transaction在进程的服务器端启动事务。

    2。如果我使用LINQ to sql,我如何锁定行?这有什么关系?另外,设置锁定时,这会如何影响购买相同产品的其他用户?使用transactionscope对象没有关系。另一位用户的交易将等待交易提交。