<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      將不確定變為確定~transactionscope何時提升為分布式事務?(sql2005數據庫解決提升到MSDTC的辦法)

      回到目錄

      對于transactionscope不了解的同學,可以看我的相關文章

       

      第二十六回   將不確定變為確定~transactionscope何時提升為分布式事務?

      第二十七回   將不確定變為確定~transactionscope何時提升為分布式事務~續

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

      第二十九回   將不確定變為確定~transactionscope何時提升為分布式事務~大結局

      第三十七回   將不確定變為確定~transactionscope何時提升為分布式事務~SQL2005與SQL2008不同

      聲明:

      對于這種事務,如果希望程序出錯自動回滾,必須將異常throw出來,不能愉愉的用日志記錄!

      測試:

      對于sql2008已經很好的支持了transactionscope,而對于sql2005來說,支持的不是很好,它將多個savechanges()方法提升為分布式事務msdtc,它不管你是否為一個數據庫,真是無奈了!還好,最好找到了解決方法,下面圖所示,將多個insert,update包裹到一個transactionscope里,所產生的結果如下:

      簡單來說,就是sp_reset_connection重新使用一次SQL鏈接時,你的事務里的代碼是被包裹在一起發送過來的,這時,如果有一條SQL語句出現異常,整個包會發生callback!

      上面圖中,只要有一條語句出現SQL異常,都會發生回滾,從而保證了數據的完整性。

      當然,我們的計算機中,并沒有開啟msdtc服務,有圖有真像

      前提:Db數據上下文對象必須與action指向的方法體里的上下文是同一個。

      相關原始代碼為:

          var objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)Db).ObjectContext;
                  try
                  {
                      objectContext.Connection.Open();
                      using (TransactionScope trans = new TransactionScope())
                      {
                      insert1();
                      insert2();
                      }
                  }
                  catch (Exception)
                  {
      
                      throw;
                  }
                  finally
                  {
                      objectContext.Connection.Close();
                  }

      OK,我們將上面代碼進行一個封裝,讓它訪問起來更方便一些,看代碼:

       /// <summary>
          /// Author:zhang.zhanling
          /// 對TransactionScope,讓它對同一個數據庫不產生msdtc服務
          /// </summary>
          public class TransactionScopeNoMsdtc
          {
              /// <summary>
              /// 產生包裹事務
              /// </summary>
              /// <param name="db">數據上下文</param>
              /// <param name="isOutermost">是否為最外層,默認為false</param>
              /// <param name="action">處理代碼塊</param>
              public static void UsingNoMsdtc(DbContext db, bool isOutermost, Action action)
              {
                  var objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)db).ObjectContext;
                  try
                  {
                      if (objectContext.Connection.State == System.Data.ConnectionState.Closed)
                          objectContext.Connection.Open();
                      using (TransactionScope trans = new TransactionScope())
                      {
                          action();
                          trans.Complete();
                      }
                  }
                  finally
                  {
                      if (isOutermost)//如果是最外層事務,而將連接關閉
                          objectContext.Connection.Close();
                  }
              }
              /// <summary>
              /// 產生包裹事務,它不是最外層的,如果是最外層的需要調用其它重載
              /// </summary>
              /// <param name="db"></param>
              /// <param name="action"></param>
              public static void UsingNoMsdtc(DbContext db, Action action)
              {
                  UsingNoMsdtc(db, false, action);
              }
          }

       

      在使用時,我們可以這樣來做,不用TransactionScope,而是用TransactionScopeNoMsdtc呵呵。

         EntityFrameworks.Data.Core.TransactionScopeNoMsdtc.UsingNoMsdtc(Db, () =>
                  {
                  insert1();
                  insert2();
                  });

      感謝閱讀!

      回到目錄

      posted @ 2013-12-03 11:17  張占嶺  閱讀(1732)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日本激情久久精品人妻热| 久久精品亚洲中文字幕无码网站| 久久精品国产最新地址| 精品国产午夜福利在线观看| 国产欧美另类久久久精品丝瓜| 麻豆国产AV剧情偷闻女邻居内裤 | 好吊视频在线一区二区三区| 婷婷伊人久久| 中文字幕国产精品日韩| 国产成人综合亚洲欧美日韩| 成码无人AV片在线电影网站| 北碚区| 国产粉嫩一区二区三区av| av深夜免费在线观看| 成人性能视频在线| 亚洲性日韩一区二区三区| 国产360激情盗摄全集| 布拖县| 激情亚洲内射一区二区三区| 美女黄18以下禁止观看| 婷婷综合亚洲| 亚洲国产精品久久久天堂麻豆宅男| 亚洲悠悠色综合中文字幕| V一区无码内射国产| 色综合久久久久综合体桃花网| 一区二区三区四区精品黄| 人妻聚色窝窝人体WWW一区| 久久人人97超碰人人澡爱香蕉| 中文字幕日韩有码第一页| 中文字幕日韩精品一区二区三区| 国产精品视频免费一区二区三区| 国产福利深夜在线播放| 欧美乱人伦人妻中文字幕| 99人中文字幕亚洲区三| XXXXXHD亚洲日本HD| 亚洲男女羞羞无遮挡久久丫| 77se77亚洲欧美在线| 精品亚洲欧美无人区乱码| 国产成人一区二区不卡| 欧美日韩国产亚洲沙发| 国产国拍精品av在线观看|