事务:(悲观锁、乐观锁) 主要探索EF中并发的解决方案

本文探讨了在面试中遇到的事务处理并发问题,特别是在Entity Framework(EF)中的应用。介绍了事务的四种状态(共享、独占、更新、意图)以及不同的事务隔离级别,如读已提交、读未提交等。讨论了悲观锁通过`updlock`、`lock`等实现方式,以及乐观锁利用`rowversion`进行版本控制防止并发冲突。在EF中,可以通过设置edm的ConcurrencyMode或使用CodeFirst的Rowversion特性来自动处理并发异常。面试时理解业务场景并掌握具体技术实现至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章背景:前几天面试时,

面试官来一句:"事务你们用过了吗?",

我答:"用过。"  

面试官:"你们是怎么用处理事务处理并发的?"

我:"......"(一脸黑人问号,事务不就是加锁或者设置事务的隔离级别吗?)

事实证明还是我知道得太少了,这两天特意去搜了下 事务的处理并发,其实如果不论业务场景,我这样想是没错的,但是如果具体到业务比如说在EF中如何使用

事务处理并发,那么接下来整理的这些针对EF并发事务的内容应该对你有所帮助:

事务的介绍:https://wenku.baidu.com/view/56b332f9f705cc175527096d.html
悲观 乐观锁都有介绍
https://www.cnblogs.com/chenwolong/p/BF.html
https://www.cnblogs.com/leslies2/archive/2012/07/30/2608784.html#t3
https://blog.csdn.net/weixin_34405332/article/details/85939629
针对单个字段的锁
https://www.cnblogs.com/JasonShenW/archive/2015/12/29/5085382.html 

解决方法总结:
1.悲观锁:(共享 独占  更新 意图 四种状态)
使用数据库的事务隔离级别:
(读已提交   读未提交  重复度  序列化)
uodlock   eg: with(updlock) 锁定更新操作
lock 
Lock、Monitor、Interlocked 

2.乐观锁:
使用rowversion  或数据集 dataset  并发时会自动验证时间戳抛出异常
dbfirst 可以修改 edm中Concu

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值