分布式事务的使用_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 分布式事务的使用

分布式事务的使用

 2014/8/31 18:53:13  博客小园丁  程序员俱乐部  我要评论(0)
  • 摘要:之前发表了一篇事务的存储过程,最近在做项目的时候遇到分布式事务,所有总结一下,跟大家分享和交流一下经验。首先说明为什么要分布式事务呢?先说说我在项目的哪里遇到分布式事务吧,我是在做网站后台开发的时候,一般涉及到有图片表的设计时,数据库存放的是图片的路径,图片是存放在网站的文件夹下面,所以我们操作产品表时,当我要删除数据库产品图片路径,同时要把存在网站目录下的图片也删掉,为了实现这功能,我就使用了分布式事务。思路:1、在项目中必须引用System.Transactions程序集2
  • 标签:使用

之前发表了一篇事务的存储过程,最近在做项目的时候遇到分布式事务,所有总结一下,跟大家分享和交流一下经验。首先说明为什么要分布式事务呢?先说说我在项目的哪里遇到分布式事务吧,我是在做网站后台开发的时候,一般涉及到有图片表的设计时,数据库存放的是图片的路径,图片是存放在网站的文件夹下面,所以我们操作产品表时,当我要删除数据库产品图片路径,同时要把存在网站目录下的图片也删掉,为了实现这功能,我就使用了分布式事务。

思路:

 1、在项目中必须引用 System.Transactions 程序集

 2、在需要进行事务管控的代码方法:System.Transactions.TransactionScope scop = new System.Transactions.TransactionScope()

 3、必须启动服务 Distributed Transaction Coordinator才能进行分布式事务的正常运行

下面是我写的一个例子主要代码:

 1         //3.根据id将数据库和文件夹的图片一起删掉
 2 
 3             //3.0根据id得到实体对象
 4             ProductEntity entity = Product_BLLSub.Get_ProductEntity(int.Parse(id));
 5            //3.1创建一个事务
 6             using (System.Transactions.TransactionScope scop = new System.Transactions.TransactionScope())
 7             { 
 8                 //3.2删除数据库图片的数据
 9                 Product_BLLSub.Create_ProductDelete(int.Parse(id));
10                 //3.3得到图片的路径  
11                 string imgPhyPath = context.Server.MapPath("/upload/img/") + entity.img_url;
12                 //3.4删除原图
13                 if (System.IO.File.Exists(imgPhyPath))
14                 {
15                     System.IO.File.Delete(imgPhyPath);
16                 }
17                 //3.5提交事务
18                 scop.Complete();
19             }
20              //删除成功
21             Response.Write("删除成功");

说明:我操作数据库的方法是将数据库数据取出来转换成实体对象,然后通过操作实体对象来操作数据库。

发表评论
用户名: 匿名