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工程 此处省略 导入依赖

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 裸奔程序和uCOS读取DM9000 ID的方法

    裸奔程序和uCOS读取DM9000 ID的方法

    2021年8月6日
    60
  • Linux查看redis版本(查看mongodb版本)

    快半年没有在Linux中使用redis了,命令有些生疏了,网上很多博文也不对,不知道博主是否直接复制的来的。以下为重新整理资料,便于忘记时候复习首先进入cd/usr/local目录不用说了我把redis安装到了redis文件夹中了,在bin目录下找到redis-server使用./redis-server–version查看版本信息[red@RedFaceloc…

    2022年4月16日
    74
  • Python之字典添加元素

    Python之字典添加元素手动推荐知识点字典创建->创建字典(7种方式)删除元素->字典删除元素(6种方式)修改元素->字典修改元素(4种方式)遍历元素->字典遍历元素(4种方式)查找元素->字典查找元素(3种方式)本文使用代码book_dict={“price”:500,”bookName”:”Python设计”,”weight”:”250g”}第一种方式:使用[]book_dict[“owner”]=”tyson”说明:中.

    2022年6月17日
    42
  • 联想笔记本键盘灯怎么开关在哪_联想笔记本怎么亮键盘灯

    联想笔记本键盘灯怎么开关在哪_联想笔记本怎么亮键盘灯现在,联想/华硕/惠普多款笔记本电脑都自带了键盘背光灯功能,这样用户在夜间或暗淡环境下作业就会更加方便!不过,很多朋友表示并不懂得如何开启键盘背光灯,该怎么办呢?接下来,小编就以windows10系统为例,给大家分享下开启/关闭键盘背光灯的操作方法。联想笔记本背光灯开启方法:1、方法通过“FN+空格”开启或关闭,支持此功能的机型,键盘上有相应标示,如图:华硕笔记本键盘背光灯开启/关闭方法:首先需要…

    2022年9月20日
    0
  • smartctl命令详解_fuser命令

    smartctl命令详解_fuser命令smart用法1.smartctl-son/dev/sda”开启磁盘的smart功能2.smartctl-a/dev/sda”显示磁盘的详细smart信息3.smartctl–test=short/dev/sda4.smartctl–test=short/dev/sdb检查磁盘坏道…

    2022年10月8日
    0
  • resnet残差网络代码_pytorch卷积神经网络

    resnet残差网络代码_pytorch卷积神经网络工欲善其事必先利其器,在使用该网络之前要先了解该网络的具体细节,我今天也是第一次查资料,然后加上自己的理解去写这篇学习成长文章。残差模块classResidualBlock(nn.Module):def__init__(self,inchannel,outchannel,stride=1,dowansample=None):super(ResidualBlock,self).__init__()self.left=nn.Sequential

    2022年10月6日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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