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

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

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

      兩種實現(xiàn)事務(wù)方法的比較

      引言

      提到事務(wù),大部分人都知道數(shù)據(jù)庫和Com+中有事務(wù)性,其實在.net framework中,還提供了一種集成了Ado.Net和SQL Server common language runtime (CLR)的方法,采用System.Transactions.TransactionScope也能實現(xiàn)數(shù)據(jù)訪問的事務(wù)性。

      本文目的

      通過閱讀本文,您可以了解以下知識

      1. 向您介紹一種新的實現(xiàn)事務(wù)的方式
      2. System.Transactions.TransactionScope的應(yīng)用場合
      3. 和數(shù)據(jù)庫事務(wù)比較,二者在性能上的差距

      向您介紹一種新的實現(xiàn)事務(wù)的方式

      .Net Frameworl 2.0為我們新增了命名空間,System.Transactions,這個命名空間為我們提供了一種新的實現(xiàn)事務(wù)的方案,它能組織一系列的代碼,如果不執(zhí)行Complete方法,這些被組織的代碼的執(zhí)行將無效。

      Msdn給出的實例為:  

      using (TransactionScope transScope = new TransactionScope())
      {
          
      using (SqlConnection connection1 = new 
             SqlConnection(connectString1))
          
      {
              
      // Opening connection1 automatically enlists it in the 
              
      // TransactionScope as a lightweight transaction.
              connection1.Open();

              
      // Do work in the first connection.

              
      // Assumes conditional logic in place where the second
              
      // connection will only be opened as needed.
              using (SqlConnection connection2 = new 
                  SqlConnection(connectString2))
              
      {
                  
      // Open the second connection, which enlists the 
                  
      // second connection and promotes the transaction to
                  
      // a full distributed transaction. 
                  connection2.Open();

                  
      // Do work in the second connection.
              }

          }

          
      //  The Complete method commits the transaction.
          transScope.Complete();
      }

       

      System.Transactions.TransactionScope的應(yīng)用場合

      傳統(tǒng)的數(shù)據(jù)庫事物有一定的弊端,比如下面這種這種情形:

      User和MemberShip是父子類的關(guān)系,且各自有各自的實現(xiàn),User類也是實現(xiàn)類,非抽象類,而數(shù)據(jù)庫中數(shù)據(jù)表設(shè)計如下:

      那么在實現(xiàn)Add方法的時候,特別是MemberShip的Add方法如何保證User和UserDetail兩個數(shù)據(jù)表操作的事務(wù)性呢?

      當然我們可以使用兩個不同的SQL,用SqlTransaction來保證事務(wù)性,但MemberShip的Add代碼是不是就有重復的地方呢,這樣的實現(xiàn)看起來怎么也不美觀,因為子類并沒有享受到父類給與的恩賜。那么使用System.Transactions.TransactionScope便可以解決這個問題,我們可以先實現(xiàn)User.Add(),因為MemberShip繼承于User,當實現(xiàn)MemberShip的Add方法時,便可以如下做

       public override bool Add()
              
      {
                  
      bool pRes = false;
                  
      using (System.Transactions.TransactionScope tx = new System.Transactions.TransactionScope())
                  
      {
                      
      //這個首先調(diào)用服務(wù)的添加方法,填充數(shù)據(jù)表Users
                      pRes = base.Add();
                      
      //下面可以實現(xiàn)向UserDetail中添加數(shù)據(jù)
                        
                      
      if(都成功了)
                      
      {
                          
      //提交,相當于Commit
                          tx.Complete();
                      }


                  }
               
                  
      return pRes;
              }


      這樣的實現(xiàn),顯得會 更OO一些。

      和數(shù)據(jù)庫事務(wù)比較,二者在性能上的差距

      既然有些場合是適合使用System.Transactions.TransactionScope的,那他的性能如何呢?自己做了一個簡單的測試,得出下面的測試數(shù)據(jù)

      循環(huán)次數(shù)

      SqlTransaction

      TransactionScope

      性能比

      100

      442183162

      15016030072

      33.95

      100

      361575387

      4891560000

      13.52

      100

      403243350

      4857052275

      12.04

      1000

      3675252488

      17089946707

      4.65

      1000

      4078101240

      17229690090

      4.22

      1000

      3589697130

      19112327573

      5.32

      10000

      46847708078

      119662532843

      2.55

      10000

      45370373625

      112767966525

      2.48

      從上面的測試結(jié)果可以看出System.Transactions.TransactionScope的性能比SqlTransaction要低,大概在10倍之內(nèi)。

      測試項目文件

      測試項目: /Files/jillzhang/TxCompare.rar

      數(shù)據(jù)庫文件: /Files/jillzhang/db.rar

       

      posted @ 2008-02-20 15:18  Robin Zhang  閱讀(10347)  評論(37)    收藏  舉報
      主站蜘蛛池模板: 在线播放深夜精品三级| 亚洲 中文 欧美 日韩 在线 | 久久爱在线视频在线观看| 国产综合久久久久鬼色| 亚洲精品色国语对白在线| 成人无码视频在线观看免费播放| 亚洲色精品vr一区区三区| 国产精品爆乳奶水无码视频免费| 亚洲综合黄色的在线观看| 中文人妻无码一区二区三区在线| 亚洲天堂男人的天堂在线| 中文字幕人妻无码一夲道| 日韩熟女精品一区二区三区| 日韩卡一卡2卡3卡4卡| XXXXXHD亚洲日本HD| 无遮挡又黄又刺激的视频| 老男人久久青草av高清| 最新AV中文字幕无码专区| xxxx丰满少妇高潮| 熟女在线视频一区二区三区| 久久月本道色综合久久| 亚洲色成人一区二区三区| 亚洲无人区码一二三四区| 久久天天躁夜夜躁狠狠820175| 亚洲色大成网站WWW久久| 亚洲最大成人美女色av| 久久不卡精品| 五月丁香激激情亚洲综合| 亚洲精品无码日韩国产不卡av| 邻居少妇张开腿让我爽了一夜| 国产性三级高清在线观看| 午夜激情福利一区二区| 综合欧美视频一区二区三区| av高清无码 在线播放| 国产 浪潮av性色四虎| 亚洲人成网站77777在线观看| 久久一级精品久熟女人妻| 久操资源站| 国产成人亚洲日韩欧美| 99久久精品国产一区二区蜜芽| 精精国产xxxx视频在线|