因此,我有多个调用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