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

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

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

      MongoDB學習筆記~為IMongoRepository接口添加了排序和表達式樹,針對官方驅動

      回到目錄

      MongoDB的官方驅動,語法更好,更強

      之前寫過關于IMongoRepository倉儲的文章,在mongodb的驅動選擇上使用了NoRM,但是進行$ref引用類型導航時出現了問題,它對引用類型屬性支持不是很好,還是使用幾年前的泛型技術而沒有使用Attribute,在這個方面官方驅動做的更好,所以,我還是使用官方驅動又實現了一次IMongoRepository,把一些實現的細節封裝在了底層,我們叫這個官方倉儲為MongoOfficialRepository,呵呵,誰叫你來的晚呢,MongoRepository已經為NoRM占上了,呵呵。

      新的IMongoRepository接口內容添加了4個方法

              /// <summary>
              /// 官方驅動,返回帶分頁的結果集
              /// </summary>
              /// <param name="pageIndex"></param>
              /// <param name="pageSize"></param>
              /// <returns></returns>
              PagedResult<TEntity> GetModel(int pageIndex, int pageSize);
      
              /// <summary>
              /// 官方驅動,返回帶條件和分頁的結果集
              /// </summary>
              /// <param name="expression"></param>
              /// <param name="pageIndex"></param>
              /// <param name="pageSize"></param>
              /// <returns></returns>
              PagedResult<TEntity> GetModel(Expression<Func<TEntity, bool>> expression, int pageIndex, int pageSize);
      
              /// <summary>
              /// 官方驅動,返回帶排序和分頁的結果集
              /// </summary>
              /// <param name="fields"></param>
              /// <param name="pageIndex"></param>
              /// <param name="pageSize"></param>
              /// <returns></returns>
              PagedResult<TEntity> GetModel(Dictionary<Expression<Func<TEntity, object>>, bool> fields, int pageIndex, int pageSize);
      
              /// <summary>
              /// 官方驅動,返回帶條件和排序及分頁的結果集
              /// </summary>
              /// <param name="expression"></param>
              /// <param name="fields"></param>
              /// <param name="pageIndex"></param>
              /// <param name="pageSize"></param>
              /// <returns></returns>
              PagedResult<TEntity> GetModel(Expression<Func<TEntity, bool>> expression, Dictionary<Expression<Func<TEntity, object>>, bool> fields, int pageIndex, int pageSize);

      對這四大方法的實現,為了不讓MongoDB的更多細節公開,所以,更多的內核只能在倉儲中實現了,呵呵

              public PagedResult<TEntity> GetModel(int pageIndex, int pageSize)
              {
                  return GetModel(i => true, pageIndex, pageSize);
              }
      
              public PagedResult<TEntity> GetModel(Expression<Func<TEntity, bool>> expression, int pageIndex, int pageSize)
              {
                  return GetModel(expression, new Dictionary<Expression<Func<TEntity, object>>, bool>(), pageIndex, pageSize);
              }
      
              public PagedResult<TEntity> GetModel(
                  Dictionary<Expression<Func<TEntity, object>>, bool> fields,
                  int pageIndex,
                  int pageSize)
              {
                  return GetModel(i => true, fields, pageIndex, pageSize);
              }
      
              public PagedResult<TEntity> GetModel(
                  Expression<Func<TEntity, bool>> expression,
                  Dictionary<Expression<Func<TEntity, object>>, bool> fields,
                  int pageIndex,
                  int pageSize)
              {
      
                  SortDefinition<TEntity> sorts = new ObjectSortDefinition<TEntity>(new { });
                  foreach (var item in fields)
                  {
                      if (item.Value)
                          sorts = sorts.Ascending(item.Key);
                      else
                          sorts = sorts.Descending(item.Key);
                  }
                  var skip = (pageIndex - 1) * pageSize;
                  var limit = pageSize;
                  var recordCount = _table.CountAsync<TEntity>(i => true).Result;
                  return new PagedResult<TEntity>(
                      recordCount,
                      (int)(recordCount + pageSize - 1) / pageSize,
                      pageSize,
                      pageIndex,
                      _table.Find(expression)
                            .Sort(sorts)
                            .Skip(skip)
                            .Limit(limit)
                            .ToListAsync().Result);
              }

      OK,現在你可以在業務層去調用它了,基本上面四個方法可以滿足你的一切需求了,呵呵!

      看下在UI層對它的調用,本DEMO沒有BLL層,呵呵

          public ActionResult Index(int? loginNameSort, int? realNameSort, int page = 1)
              {
                  Dictionary<Expression<Func<WebManageUsers, object>>, bool> sortList = 
      new System.Collections.Generic.Dictionary<Expression<Func<WebManageUsers, object>>, bool>(); if (loginNameSort.HasValue) sortList.Add(i => i.LoginName, loginNameSort.Value == 0); if (realNameSort.HasValue) sortList.Add(i => i.RealName, realNameSort.Value == 0); var model = _webManageUsersRepository.GetModel(sortList, page, 10); return View(model); }

       

       

      怎么樣,看了上面代碼是否心里癢癢了,哈哈,趕快去開發你自己的MongoDB倉儲吧!

      回到目錄

      posted @ 2015-04-27 22:11  張占嶺  閱讀(6430)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产精品午夜福利| 亚洲熟妇乱色一区二区三区| 欧洲亚洲国内老熟女超碰| 国产精品午夜福利资源| 国产偷国产偷亚洲综合av| 亚洲中文字幕五月五月婷| 欧美成人午夜精品免费福利| 亚洲人成人网站色www| 伊人成色综合人夜夜久久| 国产精品久久精品| 精品九九人人做人人爱| 国产美女69视频免费观看| 国精偷拍一区二区三区| 熟女人妇 成熟妇女系列视频| 亚洲精品成人综合色在线| 91精品国产一二三产区| 一面膜上边一面膜下边视频| 亚洲精品无码久久一线| 亚洲一区二区三区黄色片| 久久被窝亚洲精品爽爽爽 | 日本三级理论久久人妻电影| 日本人妻巨大乳挤奶水免费| 色av专区无码影音先锋| 亚洲欧美在线观看一区二区| 亚洲偷自拍国综合| 欧美国产日韩在线三区| 草草线在成年免费视频2| 青青国产揄拍视频| 国产在线线精品宅男网址| 久久精品国产国产精品四凭| 胶州市| 国产精品十八禁在线观看| 久久这里有精品国产电影网| 欧美极品少妇×xxxbbb| 真人无码作爱免费视频| 东方四虎在线观看av| 国产成人精品午夜福利| 久久精品道一区二区三区| 性一交一乱一伦| 久激情内射婷内射蜜桃| 午夜福利yw在线观看2020|