.Net 2.0引入了轻量级事务管理器(Lighweight Transaction Manager),即System.Transactions.TransactionManager。
轻量级事务管理器具有最小的开销,对比使用轻量级事务管理器的事务和直接使用本地事务,并没有性能上的差别。
如果一个事务里只有一个资源管理器,轻量级事务管理器可以让资源管理器来管理该事务,而轻量级事务管理器只负责监视他;如果轻量级事务管理器发现有另外一个资源管理器被加入到事务中,轻量级事务管理器则会让原来的资源管理器释放控制权,并将控制权交给分布式事务处理器协调。
控制权在事务还在进行时转移给分布式事务处理协调器的这个过程称为事务升级(promotion pf a transaction)。
使用Demo
1)在要程序中添加system.TransAction.dll程序集的引用。如图:
2)使用TransActionScope。
1 using (TransactionScope tan = new TransactionScope()) 2 { 3 //向第一个数据库的Fm_ArticlePro添加一条数据 4 RySfEntities db1 = new RySfEntities(); 5 Fm_ArticlePro fmArticle = new Fm_ArticlePro(); 6 fmArticle.FArP_DepID = 1; 7 fmArticle.FArP_DepName = "ceshi"; 8 fmArticle.FArP_Time = DateTime.Now.ToLongTimeString(); 9 db1.Fm_ArticlePro.Add(fmArticle); 10 db1.SaveChanges(); 11 12 //int n = 0; 13 //int m = 9/n;//故意制造错误来测试是否插入数据 14 15 //向另外一个数据库Department表添加一条数据 16 ESIMSDataEntities1 db2 = new ESIMSDataEntities1(); 17 Department d = new Department(); 18 d.Dept_ID = 1; 19 d.Dept_Description = DateTime.Now.ToLongTimeString(); 20 d.Dept_Name = "ceshi"; 21 db2.Department.Add(d); 22 db2.SaveChanges(); 23 24 tan.Complete(); 25 }
3)启动DTC服务。