中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

將不確(que)定變為(wei)確(que)定~transactionscope何時提(ti)升(sheng)為(wei)分布式(shi)事務(wu)?

回到目錄

相關文章

將不確定變為確定~transactionscope何時提升為分布式事務

將不確定變為確定~transactionscope何時提升為分布式事務~續      

將不確定變為確定~transactionscope何時提升為分布式事務~再續(避免引起不必要的MSDTC)


 

       對于frameworks的(de)TransactionScope大家應該都(dou)很熟悉了,它(ta)是(shi)一個分(fen)布(bu)式(shi)事務(wu)的(de)語句(ju)塊,被包含起來的(de)語句(ju)可以一起被提(ti)交,當出現異常后,統一進行回滾,這一切都(dou)是(shi)托管(guan)的(de)。

當WEB服務(wu)器(qi)沒有(you)開啟MSDTC服務(wu)時,會出現這個提示:

對于servers.msc中的(de)MSDTC服務,它經常性(xing)的(de)被掛掉(diao)

注意一下:如果你的msdtc服務掛了,當下一次WWW程序需要用到它時,它會自由重啟。

而(er)對于你的(de)事務塊(kuai),如果這個MSDTC服務被掛了后,如果你的(de)事務塊(kuai)中包含“跨庫”操作,它將(jiang)會被自動提升到MSDTC分布(bu)式事務,

這(zhe)時你(ni)整個代碼塊(kuai)將會中斷,并拋出你(ni)的異(yi)常!

 1     public abstract class DAL<T> : IDAL<T> where T : class
 2     {
 3 
 4         public DAL(DbContext db)
 5         {
 6             DB = db;
 7         }
 8 
 9 
10         #region Properies
11         /// <summary>
12         /// 靜態(tai)上(shang)下文
13         /// </summary>
14         //  protected readonly static DbContext DB = new Entity.testEntities();
15 
16         /// <summary>
17         /// 實例上下文
18         /// </summary>
19         protected DbContext DB;
20 
21         #endregion

 

 1       using (TransactionScope trans = new TransactionScope())
 2             {
 3                 try
 4                 {
 5                     base.Insert(entity);
 6                     entity.User_Profile.ID = entity.ID;
 7                     user_ProfileDAL.Insert(entity.User_Profile);
 8                     loginLogsDAL.Insert(new Entity.TestMSDTC.LoginLogs //跨(kua)庫操(cao)作
 9                     {
10                         ID = entity.ID,
11                         LoginName = entity.Name,
12                     });
13                     trans.Complete();
14                 }
15                 catch (Exception)
16                 {
17 
18                     throw;
19                 }
20                 finally
21                 {
22                     trans.Dispose();
23                 }
24             }

這時,你的程序由于服務器MSDTC的問題,整個流程被“走不通”,其時這是正常的,事務的作用就是為了保持“數據的完整性”,如果你把語句塊寫在同一事務中,那說明他們應該是同進同退的,這是一個理論的問題。

而我在之前看過寫過,看數據上下文的共享性會影響到事務被提升到MSTDC,我的測試告訴我,沒有實現這個結果,這里希望老趙給出一個答案吧,呵呵!在這里先謝謝趙老大了!

 回到目錄

posted @ 2013-01-04 17:41  張占嶺  閱讀(2541)  評論(1)    收藏  舉報