.Net 2.0引入了轻量级事务管理器(Lighweight Transaction Manager),即System.Transactions.TransactionManager。

  轻量级事务管理器具有最小的开销,对比使用轻量级事务管理器的事务和直接使用本地事务,并没有性能上的差别。

        如果一个事务里只有一个资源管理器,轻量级事务管理器可以让资源管理器来管理该事务,而轻量级事务管理器只负责监视他;如果轻量级事务管理器发现有另外一个资源管理器被加入到事务中,轻量级事务管理器则会让原来的资源管理器释放控制权,并将控制权交给分布式事务处理器协调。
    控制权在事务还在进行时转移给分布式事务处理协调器的这个过程称为事务升级(promotion pf a transaction)。
 
使用Demo
   1)在要程序中添加system.TransAction.dll程序集的引用。如图:
      
  2)使用TransActionScope。
    

 using (TransactionScope tan = new TransactionScope())
{
//向第一个数据库的Fm_ArticlePro添加一条数据
RySfEntities db1 = new RySfEntities();
Fm_ArticlePro fmArticle = new Fm_ArticlePro();
fmArticle.FArP_DepID = ;
fmArticle.FArP_DepName = "ceshi";
fmArticle.FArP_Time = DateTime.Now.ToLongTimeString();
db1.Fm_ArticlePro.Add(fmArticle);
db1.SaveChanges(); //int n = 0;
//int m = 9/n;//故意制造错误来测试是否插入数据 //向另外一个数据库Department表添加一条数据
ESIMSDataEntities1 db2 = new ESIMSDataEntities1();
Department d = new Department();
d.Dept_ID = ;
d.Dept_Description = DateTime.Now.ToLongTimeString();
d.Dept_Name = "ceshi";
db2.Department.Add(d);
db2.SaveChanges(); tan.Complete();
}

  3)启动DTC服务。

    桌面右击“计算机” —> 管理 —> 服务和应用程序 —> 服务。
      
    或者用命令启动:net start msdtc;
  4)运行测试。
 
  总结:很多时候,我们都只是做了第一步和第二步,而忘记启动协调跨多个数据库的DTC服务。这样就会出现一个错误,如下。

---------------------------

---------------------------
错误:基础提供程序在 Open 上失败。
---------------------------
确定
---------------------------

  出现错误了数据也不会被插入到数据库。

说明:在步骤2)中是使用的隐式方法(使用system.Transactions.TransactionScope类),该方法更加灵活,因此更加适合。显示方法会使用system.Transactions.CommittableTransaction类。

  

TransactionScope事务对多个数据库的操作的更多相关文章

  1. (四)SQL入门 数据库的操作与事务管理

    数据库的操作,有三个最基本的语句,insert插入,update修改,delete删除. 不同的数据库厂商的实现可能不同,所以就不说具体的语法怎么写的了.说语法也没有意义,到处都可以复制粘贴,记得听某 ...

  2. spring对数据库的操作、spring中事务管理的介绍与操作

    jdbcTemplate的入门 创建maven工程 此处省略 导入依赖 <!-- https://mvnrepository.com/artifact/org.springframework/s ...

  3. 数据库ACID操作---事务四原则

    事务操作四原则: 1>原子性:简单来说——整个事务操作如同原子已经是物理上最小的单位,不可分离事务操作要么一起成功,要么一起失败. 2>一致性:倘若事务操作失败,则回滚事务时,与原始状态一 ...

  4. NHibernet 事务 修改操作,事务没提交,数据库数据却同步(修改)了

    Nhibernet 缓存 由于查询出来的数据和缓存关联,更新之后就算事务没执行提交操作,数据库依旧会更新,解决方法, 清空缓存,实例不和缓存关联,如下面标红代码 public bool UpdateT ...

  5. c#传统SqlTransaction事务和TransactionScope事务

    事务有很多种,看了一些关于事务的问题,这里做下笔记····· 事务时单个的工作单位.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中永久的组成部分.若果事务遇到错误,则必须取消或 ...

  6. C# TransactionScope 事务类

    微软自带的TransactionScope(.Net Framework 2之后)是个好东东,提供的功能也很强大. 首先说说TransactionScope是什么,并能为我们做什么事情.其实看Tran ...

  7. python数据库(mysql)操作

    一.软件环境 python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块.本篇文章我是记录了python操 ...

  8. MYSQL数据库的操作

    Mysql的连接方式: 1.原生函数:mysql_connect($server,$username,$password);   //打开一个到Mysql服务器的连接 mysql_select_db( ...

  9. Python学习(21)python操作mysql数据库_操作

    目录 数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 删除操作 执行事务 错误处理 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TEST. 在TEST数 ...

随机推荐

  1. 函数lock_rec_create

    /*********************************************************************//** Creates a new record lock ...

  2. R语言实战读书笔记(一)R语言介绍

    1.3.3 工作空间 getwd():显示当前工作目录 setwd():设置当前工作目录 ls():列出当前工作空间中的对象 rm():删除对象 1.3.4 输入与输出 source():执行脚本

  3. 'String' does not conform to protocol 'CollectionType' Error in Swift 2.0

    如下是报错需要修改的源码: // if count(currentPassword) < 6 || count(newPassword) < 6 || count(confirmPassw ...

  4. phpstorm10.0.1和webstorm11注册

    webstorm11 for win 注册时选择“License server”输入“http://15.idea.lanyus.com/”点击“OK” phpstorm10.0.1 for win ...

  5. 内核打上yaffs2补丁遇到的问题

    移植yaffs2文件系统时,首先要在内核中添加对yaffs2的支持,使用命令:./patch-ker.sh c 内核目录时,出现下面错误: usage:  ./patch-ker.sh  c/l m/ ...

  6. Qt 控制watchdog app hacking

    /************************************************************************** * Qt 控制watchdog app hack ...

  7. js解决快速回车重复订单提交(客户端方式)

    Html代码: <form action="order_add_data.php" method="post" name="order_adds ...

  8. ecshop 多语言切换

    1.打开includes/init.php找到下面两行代码并删除 require(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/common.php'); ...

  9. swun 1388 你的背包

    解题思路:这题给人的第一反应是背包,第二反应是贪心,我用的是搜索,枚举就可以,要有这种意识, 题目数据只有8个,暴力是可以解决的. #include<cstdio> #include< ...

  10. 《摇滚南京》——"人生下来就是孤独"

    昨天是纪录片<摇滚南京>东南大学站的展映分享会 我不是一个摇滚迷,作为学渣狗看论文.码代码的时候会塞个耳机,平时其实民谣听得更多一点,摇滚觉得有点高大上.所以整好趁着学校有活动,也跟着高大 ...