transactionscope mysql_TransactionScope事务对多个数据库的操作[通俗易懂]

transactionscope mysql_TransactionScope事务对多个数据库的操作[通俗易懂].Net2.0引入了轻量级事务管理器(LighweightTransactionManager),即System.Transactions.TransactionManager。轻量级事务管理器具有最小的开销,对比使用轻量级事务管理器的事务和直接使用本地事务,并没有性能上的差别。如果一个事务里只有一个资源管理器,轻量级事务管理器可以让资源管理器来管理该事务,而轻量级事务管理器只负责监视他;如…

大家好,又见面了,我是你们的朋友全栈君。

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

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

如果一个事务里只有一个资源管理器,轻量级事务管理器可以让资源管理器来管理该事务,而轻量级事务管理器只负责监视他;如果轻量级事务管理器发现有另外一个资源管理器被加入到事务中,轻量级事务管理器则会让原来的资源管理器释放控制权,并将控制权交给分布式事务处理器协调。

控制权在事务还在进行时转移给分布式事务处理协调器的这个过程称为事务升级(promotion pf a transaction)。

使用Demo

1)在要程序中添加system.TransAction.dll程序集的引用。如图:

abd0b6dd1d50368671c2940b08ee0501.png

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服务。

桌面右击“计算机” —> 管理 —> 服务和应用程序 —> 服务。

2d6de802736003282ff2bbb0bedb9d25.png

或者用命令启动:net start msdtc;

4)运行测试。

总结:很多时候,我们都只是做了第一步和第二步,而忘记启动协调跨多个数据库的DTC服务。这样就会出现一个错误,如下。

—————————

—————————

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

—————————

确定

—————————

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

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

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

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

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

jdbcTemplate的入门 创建maven工程 此处省略 导入依赖

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161931.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • activiti 任务节点 处理人设置

    activiti 任务节点 处理人设置1.1.1.前言我们在使用activiti工作流引擎的时候,最常用的肯定是任务节点,因为在OA系统、审批系统、办公自动化系统中核心的处理就是流程的运转,流程的运转依赖于人员如何设置,人员的设置是非常重要的一个环节,所以说如果能让activiti工作流引擎运转的核心,就必须要支持强大的人员组织架构设计。下面我们先说一下activiti工作流引擎自身支持的可以直接使用的地方。我…

  • java的格式输入语句是_java输入输出语句是什么「建议收藏」

    java的格式输入语句是_java输入输出语句是什么「建议收藏」对于经常上机刷题的来说,首先得解决输入输出方法,Java的输入输出流在Java学习过程的后面部分才会接触,但是我们可以掌握一些简单的,常用的输入输出方法输出流java常用的输出语句有下面三种:System.out.println();//换行打印,输出之后会自动换行System.out.print();//不换行打印System.out.printf();//按格式输出输出示例publiccla…

  • Java安全之Fastjson内网利用

    Java安全之Fastjson内网利用0x00前言在打Fastjson的时候,基本上都是使用JNDI注入的方式去打,也就是JdbcRowSetImpl链分析的链去打,但是遇到一些不出网的情况

    2021年12月13日
  • wsus可以打mysql中间件补丁_加入WSUS补丁服务器并下载补丁

    ——–加入WSUS补丁服务器并下载补丁_不安装——-@echooffregdeleteHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate/vAccountDomainSid/fregdeleteHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Wind…

  • prototype.js的系列文章——关于prototype.js

    prototype.js的系列文章——关于prototype.js 很早就知道prototype.js是一个javascript的工具函数库,平时的开发中使用频率也非常的高,但是,由于工作时间问题,一直都没有静下心来研究学习一下,最近又萌发了系统学习prototype.js的念头,刚好手头比较闲,就决定边学习边将学习心得记录下来,以和更多的同仁交流分享。关于prototype.js如果你曾经使用过prototype.js,那么,本系列文章希望能够给你提供

  • 2021,2020,2019,2018年河南高考一分一段表 (含文科和理科成绩排名) excel格式

    2021,2020,2019,2018年河南高考一分一段表 (含文科和理科成绩排名) excel格式河南省高招办的资料如下,但是是pdf格式的:2018理科排名2018文科排名博主为了生计,整理了excel档的,如果有需要,向二维码支付2元,备注邮箱地址,第一时间发送给你。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号