2012-12-30 72 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對象並不重要。另一位顧客的交易將等到交易完成。 –