首页 新闻 会员 周边

Entity FrameWork的LinqToEntities如何实现行锁

0
悬赏园豆:100 [已关闭问题] 关闭于 2011-02-21 10:29

Entity FrameWork的LinqToEntities 如何实现Oracle:Select * From TblXXX For Update或SQL:Select * From TblXXX With (RowLock)

问题补充: Entity FrameWork的LinqToEntities如何实现Update TblXXX Set Qty = Qty-ParaXXX
mark_ran的主页 mark_ran | 初学一级 | 园豆:200
提问于:2011-02-19 15:32
< >
分享
所有回答(3)
0

开一个事务不就行了吗

FlyDragon | 园豆:396 (菜鸟二级) | 2011-02-20 08:57
加了事务只是实现了乐观锁,需要实现悲观锁
支持(0) 反对(0) mark_ran | 园豆:200 (初学一级) | 2011-02-21 08:14
0

这种在SQL语句假的锁全是乐观锁。

最简单的悲观锁,直接用lock把服务数据对象锁住就Ok了。

深入的话搜索一下数据库的隔离等级,看看您需要什么样的悲观锁隔离级别。

一般更新锁就可以解决大部分并发问题,虚幻行的并发问题还是要用最高级别的隔离。EF和ado.net都有提供锁的解决方案,查一下MSDN

纯粹的郭子 | 园豆:62 (初学一级) | 2012-08-01 14:42

EF可以单独设置Qty这一字段的隔离锁级别。

支持(0) 反对(0) 纯粹的郭子 | 园豆:62 (初学一级) | 2012-08-01 14:45
0

不用这么复杂,使用一个时间戳字段就可以,详细可以加我的qq350020527

腾飞刘 | 园豆:52 (初学一级) | 2012-12-06 16:24

http://www.cnblogs.com/wdfrog/archive/2012/06/14/2549835.html

SQL时间戳也很好解决并发,不知Oracle行不行

支持(0) 反对(0) mark_ran | 园豆:200 (初学一级) | 2013-01-03 12:14

Oracle的也可以很好解决并发:首先建立Oracle自己维护的行版本字段;其次EF设置该字段的并发模式;最后加锁保存

支持(0) 反对(0) mark_ran | 园豆:200 (初学一级) | 2013-02-04 17:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册