使用System.Transactiions不需要考虑是简单事务还是分布式事务。

在SQL Server 2005下.Net会创建一个Local Transaction,性能非常高。但是如果是SQL Server 2000,则会自动激发一个分布式事务,在性能上会受一些损失

using (TransactionScope ts = new TransactionScope())//使整个代码块成为事务性代码
            {
                #region 在这里编写需要具备Transaction的代码
                string msg = "";
                string conString = "data source=127.0.0.1;database=codematic;user id=sa;password=";
                SqlConnection myConnection = new SqlConnection(conString);
                myConnection.Open();
                SqlCommand myCommand = new SqlCommand();
                myCommand.Connection = myConnection;
                try
                {
                    myCommand.CommandText = "update P_Product set Name='电脑2' where Id=52";
                    myCommand.ExecuteNonQuery();
                    myCommand.CommandText = "update P_Product set Name='电脑3' where Id=53";
                    myCommand.ExecuteNonQuery();

msg = "成功!";
                }
                catch (Exception ex)
                {
                    msg = "失败:" + ex.Message;
                }
                finally
                {
                    myConnection.Close();
                }
                #endregion

ts.Complete();
                return msg;
            }

嵌套的事务处理

void RootMethod()
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //操作代码
                SonMethod();
                scope.Complete();
            }
        }
        void SonMethod()
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //操作代码
                scope.Complete();
            }
        }

事务范围

如果想保留代码部分执行的操作,并在失败的情况下不希望终止环境事务使用TransactionScopeOption.Suppress

void MethodSuppress()
        {

using (TransactionScope scope1 = new TransactionScope())
            {
                try
                {
                    //开始一个非事务范围 
                    using (TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Suppress))
                    {
                        //不受事务控制代码
                    }
                    //从这里开始又回归事务处理
                }
                catch
                { }
            }
        }

转载于:https://www.cnblogs.com/suchenge/archive/2009/07/24/1530210.html

读书笔记:《亮剑 .Net》——System.Transactions 事务处理相关推荐

  1. 《Small Memory Software:Patterns For System With Limited Memory》读书笔记

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/13297447 虽然摩尔定律让我们的计算机硬件得以以指数速度升级,但反摩尔定律又不断消减这些 ...

  2. Oracle 19c VLDB and Partitioning Guide 第5章:管理和维护基于时间的信息 读书笔记

    本文为Oracle 19c VLDB and Partitioning Guide第5章Managing and Maintaining Time-Based Information的读书笔记. Or ...

  3. Oracle 19c VLDB and Partitioning Guide 第8章:Using Parallel Execution 读书笔记

    本文为Oracle 19c VLDB and Partitioning Guide第8章Using Parallel Execution的读书笔记. 并行执行是通过使用多个进程将多个 CPU 和 I/ ...

  4. 代码精进之路:从码农到工匠读书笔记

    代码精进之路:从码农到工匠读书笔记 第一章技艺 代码命名规范的意义: 由此可见,事物的复杂程度在很大程度上取决于其有序程度,减少无序能在一定程度上降低复杂度,这正是规范的价值所在.通过规范,把无序的混 ...

  5. 《MySQL技术内 幕 InnoDB存储引擎》读书笔记

    MySQL技术内幕 LnnoDB存储引擎 读书笔记 1 MySQL 体系结构和存储引擎 1.1 数据库和数据库实例 数据库:物理操作系统文件活其他形式文件类型的集合 ​ 实例:MySQL数据库是由后台 ...

  6. 《Java8实战》-第五章读书笔记(使用流Stream-02)

    付诸实战 在本节中,我们会将迄今学到的关于流的知识付诸实践.我们来看一个不同的领域:执行交易的交易员.你的经理让你为八个查询找到答案. 找出2011年发生的所有交易,并按交易额排序(从低到高). 交易 ...

  7. Oracle 19c VLDB and Partitioning Guide 第4章:分区管理 读书笔记

    本文为Oracle 19c VLDB and Partitioning Guide第4章Partition Administration的读书笔记. 使用分区表和索引时,分区管理是一项重要任务. 本章 ...

  8. 《ClickHouse原理解析与应用实践》读书笔记(1)

    开始学习<ClickHouse原理解析与应用实践>,写博客作读书笔记. 本文全部内容都来自于书中内容,个人提炼. 前言和推荐 略过 第1章 ClickHouse的前世今生 跟ck没多大关系 ...

  9. 《数据密集型应用系统设计》读书笔记——数据系统基础

    因为个人兴趣,想学学分布式方面的知识,然后找到了这本<数据密集型应用系统设计>,确实非常的不错,无论对于以前的工程还是现在的科研都有启迪和感悟,所以就写份读书笔记记录一下,里面提到的知识非 ...

最新文章

  1. Python—pandas中DataFrame类型数据操作函数
  2. C++ vector容器中用erase函数和迭代器删除重复元素问题分析
  3. spring mvc框架请求注解解析,内部资源视图解析器
  4. C++基础06-类与对象之new和malloc
  5. 成长的道路上,我很幸运
  6. elasticsearch查询操作(使用marvel插件)
  7. 华为机试HJ84:统计大写字母个数
  8. mappartitions java_Spark算子:RDD基本转换操作(5)–mapPartitions、mapPartitionsWithIndex
  9. 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
  10. 随机森林进行特征选择
  11. Extjs4.2里Grid显示日期类型数据
  12. 红宝书(javascirpt高级程序设计)学习笔记(一)
  13. 一元钱一瓶汽水,喝完后两个空瓶能换一瓶汽水,问:你有20元钱,可以喝到几瓶汽水?
  14. html 盒子 边距,css盒子-内外边距
  15. eclipse报错:The project was not built due to “Could not delete...”. Fix the problem...
  16. 运用三角不等式加速Kmeans聚类算法
  17. 单价数量和总价的公式_小学数学基础公式:单价数量总价公式(十二)
  18. 【Python爬虫案例教学】采集某网站壁纸,实现壁纸自由
  19. win10 64位系统 打开光盘出现339错误 缺少mscomctl.ocx组件 解决方案
  20. 小程序 rich-text 修改图片和文字样式

热门文章

  1. 缺陷检测算法matlab,MATLAB 基于模板匹配的玻璃瓶口缺陷检测
  2. jquery中each_如何在jQuery中使用each()
  3. testng数据驱动_TestNG数据提供者
  4. Python strftime()
  5. okhttp离线缓存_Android改造OkHttp离线缓存
  6. Git合并特定commits 到另一个分支
  7. C++基础知识(二)命名空间
  8. 复合页( Compound Page )
  9. 制造业Google Glass 焕发巨大活力
  10. Linux监控平台(zabbix监控介绍,安装zabbix,解决忘记admin密码)