LINQTOSQL分布式事务

LINQ TO SQL分布式事务

作者:佚名 2009-09-18 15:10:13

开发

后端

分布式 这里介绍LINQ TO SQL分布式事务,以及介绍LINQ TO SQL通过在submitchanges方法的时候指定ConflictMode来定义并发控制行为。

创新互联建站服务项目包括黄岩网站建设、黄岩网站制作、黄岩网页制作以及黄岩网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,黄岩网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到黄岩省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

在向大家详细介绍LINQ TO SQL分布式事务之前,首先让大家了解下隐式事务和显式事务,然后全面介绍LINQ TO SQL分布式事务。

LINQ TO SQL,顾名思义,涉及到了数据库操作。那么就会有一个事务的概念,例如,假设我们需要一次性插入两个实体,但希望保证这两个操作的完整性的话。

1. 隐式事务

其实,即便我们不写代码,LINQ TO SQL也会自动创建一个事务的。默认事务隔离级别为ReadCommitted

2. 显式事务

我们也可以自己写代码,来明确地控制事务,默认事务隔离级别为ReadCommitted

3. LINQ TO SQL分布式事务

我们也可以使用TransactionScope对象,来定义LINQ TO SQL分布式事务。

注意:TransactionScope的默认隔离级别为可串行化,可能带来并发锁冲突问题。

***大概要谈一下并发控制的问题:这个问题的出现就在于,某些时候,某个客户端读取到了数据,然后它断开了,在本地修改;同时,另外一个客户端也读取到了数据,并且修改并提交了。此时,***个客户端如果再进行更新,就应该是有所问题的。这就是所谓的并发问题。

LINQ TO SQL通过在submitchanges方法的时候指定ConflictMode来定义并发控制行为:
◆FailOnFirstConflict(默认的)
◆ContinueOnConflict

下面有一个例子,讲解了并发冲突时继续操作,并且对冲突项进行解决

  
 
 
  1. var query = from p in ctx.Products where p.CategoryID == 1 select p;  
  2. foreach (var p in query)  
  3. p.UnitsInStock = Convert.ToInt16(p.UnitsInStock - 1);  
  4. try  
  5. {  
  6. ctx.SubmitChanges(ConflictMode.ContinueOnConflict);  
  7. }  
  8. catch (ChangeConflictException)  
  9. {  
  10. foreach (ObjectChangeConflict cc in ctx.ChangeConflicts)  
  11. {  
  12. Product p = (Product)cc.Object;  
  13. Reponse.Write(p.ProductID + "  
  14. ");  
  15. cc.Resolve(RefreshMode.OverwriteCurrentValues);   
  16. // 放弃当前更新,所有更新以原先更新为准  
  17. }  

【编辑推荐】

  1. Linq匿名类型简单概述
  2. Linq随机读取数据浅析
  3. Linq Lambda表达式全面分析
  4. Linq扩展方法简单分析
  5. 初探Linq局部变量类型

本文名称:LINQTOSQL分布式事务
分享链接:http://www.mswzjz.cn/qtweb/news7/290007.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能