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

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

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

      實體處理模塊IEntityModule

      在2015年7月16日,XCode新增了實體處理模塊IEntityModule,用于攔截實體對象添刪改操作。

      該接口參考IHttpModule設計理念,橫切在實體對象的關鍵生命周期之中,以達到多實體類通用處理的效果。比如為多個實體類增加假刪除等特色功能。

      /// <summary>實體處理模塊</summary>
      public interface IEntityModule
      {
          /// <summary>為指定實體類初始化模塊,返回是否支持</summary>
              /// <param name="entityType"></param>
              /// <returns></returns>
          Boolean Init(Type entityType);
      
          /// <summary>創建實體對象</summary>
              /// <param name="entity"></param>
              /// <param name="forEdit"></param>
          void Create(IEntity entity, Boolean forEdit);
      
          /// <summary>驗證實體對象</summary>
              /// <param name="entity"></param>
              /// <param name="isNew"></param>
              /// <returns></returns>
          Boolean Valid(IEntity entity, Boolean isNew);
      
          /// <summary>刪除實體對象</summary>
              /// <param name="entity"></param>
          Boolean Delete(IEntity entity);
      }

       

       

      我們來看一段接口例程:

      class TestModule : EntityModule
      {
          protected override Boolean OnInit(Type entityType)
          {
              return entityType == typeof(UserX);
          }
      
          protected override Boolean OnValid(IEntity entity, Boolean isNew)
          {
              if (isNew)
                  XTrace.WriteLine("新增實體 " + entity.GetType().Name);
              else
                  XTrace.WriteLine("更新實體 " + entity.GetType().Name);
      
              return base.OnValid(entity, isNew);
          }
      
          protected override Boolean OnDelete(IEntity entity)
          {
              XTrace.WriteLine("刪除實體 " + entity.GetType().Name);
      
              return base.OnDelete(entity);
          }
      
          public static void Test()
          {
              EntityModules.Global.Add<TestModule>();
      
              var user = new UserX
              {
                  Name = "Stone",
                  RoleID = 1
              };
              user.Save();
      
              user.Name = "大石頭";
              user.Update();
      
              user.Delete();
          }
      }

      模塊TestModule繼承自抽象基類EntityModule,它實現了IEntityModule接口的基本功能。

      EntityModules.Global.Add<TestModule>(); 用于把該模塊注冊成為全局處理模塊

      也可以注冊到具體單個實體類里面,比如 UserX.Meta.Modules.Add<TestModule>();

       

      Init方法用于判斷指定實體類是否需要執行過濾模塊,只有它返回true,后面的接口方法才會被調用。

      OnValid等同于實體類的Valid,新增或修改實體對象時會調用,通過isNew參數區分。因為絕大多數業務邏輯的新增和修改都有關系,所以把它們做到一塊。

      OnDelete就是刪除攔截啦。如果想做假刪除,就是在這里把刪除標記字段改為true,然后entity.Update保存,接著返回false讓外部不要繼續執行Delete

       

      在XCode內部,有三個最常用的接口實現:UserModule、TimeModule、IPModule

      它們的功能如下:

      1,新增時CreateUserID使用當前登錄用戶(通過IManageProvider接口獲?。?,新增修改時UpdateUserID使用當前登錄用戶

      2,新增時CreateTime使用當前時間,新增修改時UpdateTime使用當前時間

      3,新增時CreateIP使用當前訪問地址(通過WebHelper.UserHost),新增修改時UpdateIP使用當前訪問地址

      所以,這六個字段赫赫有名,就寫在NX001軟件設計標準里面。

      一般在需要用到的實體類靜態構造函數里面注冊使用。

      static Shard()
      {
          // 過濾器 UserModule、TimeModule、IPModule
          Meta.Modules.Add<UserModule>();
          Meta.Modules.Add<TimeModule>();
          Meta.Modules.Add<IPModule>();
      }

       

      實際使用中,只要一個團隊遵循統一的數據庫設計規范,就一定可以抽象出來許多IEntityModule實現!

       

      posted @ 2017-08-30 23:53  大石頭  閱讀(1028)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 亚洲第一视频区| 亚洲日韩AV秘 无码一区二区| 日韩中文字幕一区二区不卡| 久久久久国产一级毛片高清版A| 偷拍专区一区二区三区| 精品精品久久宅男的天堂| 国产一区二区三区美女| 欧美激情一区二区| 欧美日韩在线视频| 中文字幕亚洲男人的天堂| 樱花草视频www日本韩国| 国产仑乱无码内谢| 欧美亚洲h在线一区二区| 国产小嫩模无套中出视频| 亚洲精品久久久蜜桃| 国产成年码av片在线观看 | 毛片无码一区二区三区| 男人用嘴添女人私密视频| 亚洲国产日韩精品一区二区三区| 国产一区二区三区在线观| 迁西县| 精品粉嫩国产一区二区三区| 亚洲成人精品综合在线| 办公室强奷漂亮少妇视频 | 亚洲欧美人成电影在线观看| 中文字幕亚洲精品第一页| 欧美高清一区三区在线专区| 人成午夜大片免费视频77777| 亚洲三区在线观看无套内射| 春菜花亚洲一区二区三区| 亚洲一区成人av在线| 日韩精品人妻黄色一级片| 国产mv在线天堂mv免费观看| 亚洲性一交一乱一伦视频| 老色鬼在线精品视频| 亚洲第三十四九中文字幕| 人人澡人人妻人人爽人人蜜桃| 免费久久人人香蕉av| 国产精品久久国产精麻豆99网站| 精品久久人人妻人人做精品| 中文字幕乱妇无码av在线|