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

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

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

      DDD~基礎設施層~續

      回到目錄

      在之前寫的DDD~基礎設施層文章中,提到了UnitOfWork,它里面有一些方法,但經過項目證明,不應該有Save和IsExplicitSubmit,而這個工作單元只起到了數據上下文統一的作用,如A和B對象需要在同一個上下文中工作,這時,我們可以引用工作單元的概念,而對于保存和提交操作,還是應該在局部方法里完成的。

      為了不去觸發MSDTC,我會封裝一個特殊的事務,來實現這個工作,而對于SQL2008來說,可以直接使用.net自己的TransactionScope實現,對于同一個數據庫來說,它不會被提升為分布式事務,而SQL2008以下的版本,則需要使用占占封裝的事務,代碼如下:

          /// <summary>
          /// Author:zhang.zhanling
          /// 同步文章:http://www.rzrgm.cn/lori/p/3455393.html
          /// 對TransactionScope,讓它對同一個數據庫不產生msdtc服務
          /// </summary>
          public class TransactionScopeNoMsdtc
          {
              /// <summary>
              /// 產生包裹事務
              /// 支持LINQ表提交,并同時返回提交結果到實體
              /// </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())
                      {
                          try
                          {
                              action();
                              trans.Complete();
                          }
                          catch (Exception)
                          {
                              throw;
                          }
                          finally
                          {
                              trans.Dispose();
                          }
                      }
                  }
                  catch (Exception)
                  {
                      throw;
                  }
                  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);
              }
          }

      而最新的IUnitOfWork接口就變成了一個標識接口,代碼如下

          /// <summary>
          /// 數據上下文標識接口,它對于業務層應該是公開的
          /// 它對于實現上下文的方法,它并不關心,可以是linq2sql,ef,ado.net,nhibernate,memory,nosql等
          /// </summary>
          public interface IUnitOfWork
          {
          }

      我們看到,IUnitOfWork主要作用是標示各個倉儲在同一個上下文當中,或者說,在一個工作單元之中,下面是項目中使用的代碼,我們可以參考一下

          /// <summary>
          /// Point_Info倉儲
          /// </summary>
          /// <remarks>create:cyr_(Ben)_20131128</remarks>
          public class Point_InfoRepository : TsingDa_NewLearningBarRepository<Point_Info>
          {
              #region Constructors
              public Point_InfoRepository() : this(null) { }
              public Point_InfoRepository(IUnitOfWork db) : base(db) { }
              #endregion
          }

      我們可以看到,上面的倉儲提供了兩個構造方法的實現,默認為空參,還有一個可以為它傳入一個IUnitOfWork工作單元,本倉儲也支持IoC的構造方法注入。

      回到目錄

      posted @ 2014-08-12 09:30  張占嶺  閱讀(2023)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 99热门精品一区二区三区无码| 高清色本在线www| 94人妻少妇偷人精品| 国产在线一区二区不卡| 国产一区二区三区在线观看免费| 国产亚洲精品第一综合| 欧洲码亚洲码的区别入口 | 久久精品国产一区二区三 | 日本中文字幕在线播放| 国产成人高清精品亚洲| 五月婷婷激情第四季| 丰满熟妇乱又伦在线无码视频| 中文国产不卡一区二区| 国产一区二区亚洲精品| 久久久久免费看少妇高潮A片| 国产成人亚洲综合图区 | 日本一区二区三区在线播放| 亚洲av精彩一区二区| 涩欲国产一区二区三区四区| 猫咪AV成人永久网站在线观看| 国产亚洲精品黑人粗大精选| 久久精品亚洲成在人线av麻豆| 中文字幕有码日韩精品| 漂亮的保姆hd完整版免费韩国| 色欲久久人妻内射| 南丰县| 久久老熟妇精品免费观看| 四虎成人精品无码| 四虎永久精品免费视频| 亚洲中文久久久久久精品国产| 亚洲熟妇自偷自拍另欧美| 成人深夜节目在线观看| 精品国产成人a在线观看| 国产综合久久亚洲综合| 中文字幕日韩精品人妻| 久久热这里只有精品国产| 天天影视色香欲综合久久| 亚洲午夜香蕉久久精品| 精品亚洲国产成人性色av| 91老肥熟女九色老女人| 亚洲欧美牲交|