Linq开放式并发深入剖析

开发 后端
这里介绍Linq开放式并发,在 LINQ to SQL 对象模型中,当以下两个条件都得到满足时,就会发生“Linq开放式并发冲突”:客户端尝试向数据库提交更改;

在向大家详细介绍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重要组成部分简介
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-09-14 15:12:40

LINQ to XML

2010-05-05 10:24:00

Unix系统

2021-10-31 15:03:14

RAN无线电接入网络网络

2009-09-07 17:18:33

LINQ查询表达式

2009-09-08 09:59:26

LINQ遍历多个数组

2009-01-14 18:53:13

服务器虚拟化VMware

2012-11-06 10:02:05

混合云开放式归档数据

2009-01-20 14:28:15

Sun开放式存储SSD

2021-01-27 16:51:15

区块链金融安全

2009-03-20 09:34:50

云计算Sun开放平台

2012-05-03 10:39:39

云计算开放封闭

2012-11-27 09:20:21

开放式混合云IT

2013-06-14 16:24:19

红帽OpenStack产品

2011-05-07 15:30:56

富士通云计算,服务器

2015-09-21 14:06:26

2014-06-12 12:59:25

瞻博Aruba Netwo

2021-08-23 14:56:15

RAN5G网络

2009-11-17 17:39:40

路由器产品

2012-10-30 09:38:14

2012-10-10 10:17:05

Google微软开放式网页标准
点赞
收藏

51CTO技术栈公众号