开发框架 EF+asp.net MVc
我开发的交易平台里分手机端和PC端,交易部分代码从pc版复制过去,他们是分别写在两个控制器里。
现在的问题是,同一秒钟PC端和手机端进行同一个操作,就会出现数据不对或是重复插入。
比如在卖的商品库存只2个,A用pc端下单购买2个,B下单购买1个。 结果就出现两个订单,但实际上库存已经没有,B不应该下单成功。
我在手机端和pc端都使用了事物,但还是出这个问题。
这种情况,我要怎么处理?并发的时候,如何保证数据的正确?
百度:ef并发处理,
ef的并发是乐观锁.要加行版本字段
这个适合于Database First 吗?
我看要在生成的实体里再加上 [Timestamp] 。
我数据库更新了,不就没了吗?
@wunaigong: 没有适用不适用.不能用也得用.
因为ef的并发管理只有这一个.
实例方法加锁没用。
也就是说客户端每次请求,都会生成新的实例。
封装成静态方法,加锁。
要么用锁;要么字段有个标志,sql里面有判断就行了。
一般并发下选择后者。
可以使用乐观锁,update num,=1 where num>0