transactionscope mysql_TransactionScope事务对多个数据库的操作
.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类。
(四)SQL入门 数据库的操作与事务管理
数据库的操作,有三个最基本的语句,insert插入,update修改,delete删除. 不同的数据库厂商的实现可能不同,所以就不说具体的语法怎么写的了.说语法也没有意义,到处都可以复制粘贴,记得听某 ...
spring对数据库的操作、spring中事务管理的介绍与操作
jdbcTemplate的入门 创建maven工程 此处省略 导入依赖
transactionscope mysql_TransactionScope事务对多个数据库的操作相关推荐
- transactionscope mysql_TransactionScope事务操作
using (TransactionScope trans = newTransactionScope()) {try{ InsertUserBase();//它插入不成功,自己回滚 UserInfo ...
- 数据库事务与TransactionScope代码事务区别
1.TransactionScope代码事务 TransactionScope 类 位于using System.Transactions;命名空间下,需要在引用中手动加入.该类不能被继承. //// ...
- 事务管理基础:数据库的并发控制相关知识笔记
1.并发操作的概念介绍 并发操作主要是指在多用户共享的系统当中,可能存在很多用户同时对同一个数据进行操作.并发操作会造成丢失更新.不可重复读.读脏数据.主要原因是事务的并发操作破坏了事务的隔离性. 2 ...
- sqllite事务和MySQL事务_Android学习---SQLite数据库的增删改查和事务(transaction)调用...
上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代 ...
- 清空数据库事务日志_通过事务日志增长加快数据库恢复和长期运行的事务
清空数据库事务日志 In my previous article in this series Accelerated Database Recovery; Instant Rollback and ...
- 如何使用损坏或删除SQL Server事务日志文件重建数据库
This is the last article, but not the least one, in the SQL Server Transaction Log series. In this s ...
- Spring 事务传播原理及数据库事务操作原理
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 先看看 Spring 事务的基础配置 <beans xmlns="http://www.springframework.org/ ...
- mysql 事务 不同库_MYSQL数据库重点:事务与锁机制
一.事务 一组连续的数据库操作,每一次操作都成功,整个事务就成功,只要有一步出错,整个事务就失败: MySQL事务与存储引擎相关 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB: ...
- mysql事务转账_模拟数据库事务实现转账
模拟数据库事务实现转账 实现思路 采用和真实数据库同样的策略,来实现数据库的事务.采用redo 和undo 来确保事务的持久性和原子性. redo log是为了确保事务的持久性,数据库在进行数据的更新 ...
最新文章
- 机器人最大的人类士人禾力积木_开化县华埠镇中心小学:积木机器人好玩儿~~...
- JQuery EasyUI学习框架
- 【算法】模拟退火算法解决TSP问题的matlab实现
- 计算机运行游戏慢怎么办,电脑运行太慢了太卡了怎么办,台式电脑运行速度慢的解决方法...
- 《iOS应用开发指南——使用HTML5、CSS3和JavaScript》——导读
- 2020年女人体重表,看看你是不是标准的模特体重
- CentOS下安装semanage
- linux系统atom安装教程,Ubuntu/Linux Mint上安装Atom文本编辑器
- matlab在电磁学中的应用,MATLAB在电磁学中的应用
- python的作用域分别有几种_python 作用域知识点整理
- lg android tv画面调试,细看系统设置 功能齐全设置简单_LG 60GB7800-CC_液晶电视评测-中关村在线...
- Logistic回归小结
- boostrap框架学习
- 猿创征文|[CM311-1A Armbian]-烧录制作 Armbian 系统盘以及写入 CM311-1A 机顶盒的 EMMC 刷成服务器
- matlab单位采样序列程序,matlab产生pn序列
- 小米max2装鸿蒙,小米Max2最全评测 小米Max2值不值得买?
- 苹果计算机关机时间不准,mac长时间不关机时间不准确问题
- 【ArcGIS Server】切片时C盘空间不足(本地缓存目录空间不足)
- 各大浏览器兼容性问题
- java 静态 非静态_Java中的静态类和非静态类
热门文章
- asp.net中的跨页发送(利用PreviousPage.FindControl()方法取值)
- 银河计划让闲置带宽共享变宝
- 对联广告关闭挖扭的制作
- 迷你电驱剪叉的电气应用方案
- hibernate查询方法query.setResultTransformer
- python小菜菜第一次尝试写程序 虽然用了很久 但是有收获就很开心啦
- Windows系统下对文件进行MD5校验
- Python 多线程+多进程简单使用教程,如何在多进程开多线程
- GreenPlum 大数据平台--介绍
- 题目 2328: [信息学奥赛一本通-T1176]谁考了第k名