Linq开放式并发深入剖析
创始人
2024-06-06 12:31:41
0

在向大家详细介绍Linq开放式并发之前,首先让大家了解下Linq开放式并发控制,然后全面介绍Linq开放式并发。

Linq开放式并发控制

在 LINQ to SQL 对象模型中,当以下两个条件都得到满足时,就会发生“Linq开放式并发冲突”:客户端尝试向数据库提交更改;数据库中的一个或多个更新检查值自客户端上次读取它们以来已得到更新。 此冲突的解决过程包括查明对象的哪些成员发生冲突,然后决定您希望如何进行处理。

Linq开放式并发(Optimistic Concurrency)

说明:这个例子中在你读取数据之前,另外一个用户已经修改并提交更新了这个数据,所以不会出现冲突。

  1. //我们打开一个新的连接来模拟另外一个用户  
  2. NorthwindDataContext otherUser_db = new NorthwindDataContext();  
  3. var otherUser_product =  
  4. otherUser_db.Products.First(p => p.ProductID == 1);  
  5. otherUser_product.UnitPrice = 999.99M;  
  6. otherUser_db.SubmitChanges();  
  7. //我们当前连接  
  8. var product = db.Products.First(p => p.ProductID == 1);  
  9. product.UnitPrice = 777.77M;  
  10. try  
  11. {  
  12. db.SubmitChanges();//当前连接执行成功  
  13. }  
  14. catch (ChangeConflictException)  
  15. {  

说明:我们读取数据之后,另外一个用户获取并提交更新了这个数据,这时,我们更新这个数据时,引起了一个并发冲突。系统发生回滚,允许你可以从数据库检索新更新的数据,并决定如何继续进行您自己的更新。

  1. //当前用户  
  2. var product = db.Products.First(p => p.ProductID == 1);  
  3. //我们打开一个新的连接来模拟另外一个用户  
  4. NorthwindDataContext otherUser_db = new NorthwindDataContext() ;  
  5. var otherUser_product =   
  6. otherUser_db.Products.First(p => p.ProductID == 1);  
  7. otherUser_product.UnitPrice = 999.99M;  
  8. otherUser_db.SubmitChanges();  
  9. //当前用户修改  
  10. product.UnitPrice = 777.77M;  
  11. try  
  12. {  
  13. db.SubmitChanges();  
  14. }  
  15. catch (ChangeConflictException)  
  16. {  
  17. //发生异常!  

【编辑推荐】

  1. LINQ查询操作经验总结
  2. LINQ遍历多个数组深入剖析
  3. Linq查询Access数据文件浅谈
  4. LINQ构建框架设计学习笔记
  5. LINQ重要组成部分简介

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...