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

ORM/EF 专栏收录该内容
3 篇文章 0 订阅

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

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

我答:"用过。"  

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

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

事实证明还是我知道得太少了,这两天特意去搜了下 事务的处理并发,其实如果不论业务场景,我这样想是没错的,但是如果具体到业务比如说在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中ConcurrencyMode=fixed 并发时会自动验证时间戳抛出异常
codefist:使用 Rowversion

 

PS:文中链接都是看百度文库和csdn的大佬写得比较好的,如有侵权请联系会删掉 。

其实面试官如果问道某些问题如何处理时,我们可以反问下他们对这个问题出现的场景,比如我这次面试,他只是问我事务并发处理如何处理,最后入职了,才知道他可能最想问我的是 EF中的事务并发如何处理,当时并没有想到Rowversion 这个预先检查的知识点,不过这个只是个人想法,最要紧的还是要提升自己的技术栈~

  • 0
    点赞
  • 5
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<p> <span style="color:#000000;"><strong>大体分为3个阶段的学习:</strong></span> </p> <p> <span style="color:#000000;"><strong>第一阶段是<span style="background-color:#FFE500;">mvc基础的学习</span>,通过通俗易懂的例子,体现mvc框架的优势;</strong></span> </p> <p> <span style="color:#000000;"><strong>第二阶段是<span style="background-color:#FFE500;">EF的学习</span>,通过实际案例,体现orm框架的伟大之处;</strong></span> </p> <p> <span style="color:#000000;"><strong>第三阶段是<span style="background-color:#FFE500;">项目开发</span>阶段,采用mvc+ef+多层架构的布局,采用TDD的开发模式</strong></span><strong><span style="font-size:16px;">,大概的功能如下:</span></strong> </p> <p> <br /> </p> <p> <span style="font-size:16px;"><strong>   《巧租房》是一个手机版的租房网站,提供了搜索房源、预约看房、房源委托、后台抢单、房源管理、操作日志、定时报表、配置管理等功能。项目采用的是b/s模式的架构,包括一个后台管理和一个前端的可以自适应于手机端的页面,项目全程采用TDD开发模式,用到如下的技术:</strong></span><span style="font-size:16px;"><strong> </strong></span> </p> <p> <span style="font-size:16px;"><strong>     </strong></span><span style="font-size:16px;"><span style="font-size:16px;"><strong> 前端技术:</strong></span><strong><span style="font-size:16px;">前端MVC引擎(artTemplate)、HUI、MUI(手机端自适应)、ValidForm、Layer;</span></strong><br /> </span> </p> <p> <span style="font-size:16px;"><span style="font-size:16px;"><strong>    .Net高级技术:</strong></span><strong><span style="font-size:16px;">自定义Filter、自定义ModelBinder、ASP.Net MVC+EntityFramework实践;</span></strong></span> </p> <p> <span style="font-size:16px;"><span style="font-size:16px;"><strong>     大型网站架构:</strong></span><strong><span style="font-size:16px;">UnitTest、AutoFac、分布式架构(Redis、Memecached等)、CDN与云存储、云计算服务(短信验证、SendCloud邮件云)、RBAC权限控制、页面静态化和SSI;数据库并发控制(悲观锁乐观锁);</span></strong></span> </p> <p> <span style="font-size:16px;"><span style="font-size:16px;"><strong>      高级开源组件:</strong></span><strong><span style="font-size:16px;">ElasticSearch全文搜索引擎;Quartz.Net定时调度;UEditor;Log4Net**版;互联网网站安全(XSS、CSRF等);CodeCarvings.Piczard(水印、缩略图);CaptchaGen(验证码);WebUploader文件无刷新上传</span></strong></span> </p> <p> <span style="font-size:16px;"><strong><span style="font-size:16px;"><img src="https://img-bss.csdn.net/202002071220199742.png" alt="" /><br /> </span></strong></span> </p> <strong><span style="font-size:16px;"><img src="https://img-bss.csdn.net/202002071220288479.png" alt="" /></span></strong> <p> <br /> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/202002071221023835.jpg" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/202002071221196040.jpg" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/202002071221399932.jpg" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/202002071222055368.jpg" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/202002071222246104.jpg" alt="" /> </p>
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值