因此,我有多個調用C#方法的ajax請求,其中包括檢查數據庫中的值並將其減1。針對異步請求同時觸發數據庫的解決方案
public SomeModel Get(int id)
...
credit.Available -= 1;
dbContext.SaveChanges();
因此,從理論上講,每次該方法運行時,可用信用減1。但是,因爲它們幾乎平行運行,所以credit.Available
總是相同的,並且僅減少一次,例如,即使它運行5次。如果數字是20次,則會減少兩次。
可以做些什麼來解決這個問題?
不要爲此使用ORM。考慮你的代碼的作用 - 所有5個用戶讀取相同的值,例如10.所有5個將其減1,然後所有5個保存* same *值,9.如果你使用了SQL命令,比如'UPDATE ... SET AVAILABLE = AVAILABLE-1'你沒有問題 –
重複解釋了爲什麼ORMs不能增加/減少,但這個問題提供了一個實際的解決方案 –
@PanagiotisKanavos,繼續,我在聽 – chiapa