ASP.NET中分佈式事務的使用

以前發表了一篇事務的存儲過程,最近在作項目的時候遇到分佈式事務,全部總結一下,跟你們分享和交流一下經驗。首先說明爲何要分佈式事務呢?先說說我在項目的哪裏遇到分佈式事務吧,我是在作網站後臺開發的時候,通常涉及到有圖片表的設計時,數據庫存放的是圖片的路徑,圖片是存放在網站的文件夾下面,因此咱們操做產品表時,當我要刪除數據庫產品圖片路徑,同時要把存在網站目錄下的圖片也刪掉,爲了實現這功能,我就使用了分佈式事務。數據庫

思路:分佈式

 一、在項目中必須引用 System.Transactions 程序集網站

 二、在須要進行事務管控的代碼方法:System.Transactions.TransactionScope scop = new System.Transactions.TransactionScope()url

 三、必須啓動服務 Distributed Transaction Coordinator才能進行分佈式事務的正常運行spa

下面是我寫的一個例子主要代碼:設計

 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               12                     //3.3獲得圖片的路徑
13                     string thumphyPath = context.Server.MapPath("/upload/thum/") + entity.img_url;
14                     string imgPhyPath = context.Server.MapPath("/upload/img/") + entity.img_url;
15                     //3.4刪除縮略圖
16                     if (System.IO.File.Exists(thumphyPath))
17                     {
18                         System.IO.File.Delete(thumphyPath);
19                     }
20                     //3.5刪除原圖
21                     if (System.IO.File.Exists(imgPhyPath))
22                     {
23                         System.IO.File.Delete(imgPhyPath);
24                     }
25                     //3.6提交事務
26                     scop.Complete();
27                 }
28        35          //刪除成功
36          Response.Write("刪除成功");

說明:我操做數據庫的方法是將數據庫數據取出來轉換成實體對象,而後經過操做實體對象來操做數據庫。code

相關文章
相關標籤/搜索