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

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

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

      MongoDB學(xué)習(xí)筆記~為IMongoRepository接口更新指定字段

      回到目錄

      對(duì)于MongoDB來(lái)說(shuō),它的更新建議是對(duì)指定字段來(lái)說(shuō)的,即不是把對(duì)象里的所有字段都進(jìn)行update,而是按需去更新,這在性能上是最優(yōu)的,這當(dāng)然也是非常容易理解的,我們今天要實(shí)現(xiàn)的就是這種按需去更新,并且,我還是不希望將MongoDB的內(nèi)核暴露出去,這時(shí),我想到了EF時(shí)候的按需要更新,即為實(shí)體哪些屬性賦值就更新哪些屬性;這個(gè)功能實(shí)際上使用了表達(dá)式樹,將你的屬性和屬性值存儲(chǔ)到Expression里,然后在update方法內(nèi)部再進(jìn)行解析即可,具體代碼如下

              public void Update<T>(System.Linq.Expressions.Expression<Action<T>> entity) where T : class
              {
                  var query = new QueryDocument();
                  var fieldList = new List<UpdateDefinition<TEntity>>();
      
                  var param = entity.Body as MemberInitExpression;
                  foreach (var item in param.Bindings)
                  {
                      string propertyName = item.Member.Name;
                      object propertyValue;
                      var memberAssignment = item as MemberAssignment;
                      if (memberAssignment.Expression.NodeType == ExpressionType.Constant)
                      {
                          propertyValue = (memberAssignment.Expression as ConstantExpression).Value;
                      }
                      else
                      {
                          propertyValue = Expression.Lambda(memberAssignment.Expression, null).Compile().DynamicInvoke();
                      }
      
                      if (propertyName != EntityKey)//更新集中不能有實(shí)體鍵_id
                      {
                          fieldList.Add(Builders<TEntity>.Update.Set(propertyName, propertyValue));
                      }
                      else
                      {
                          query = new QueryDocument("_id",new ObjectId(propertyValue.ToString()));
                      }
      
                  }
      
                   ForWait(() => _table.UpdateOneAsync(query, Builders<TEntity>.Update.Combine(fieldList)));
              }

      其實(shí)在方法調(diào)用上也是非常容易的,我們來(lái)看這個(gè)例子

              [HttpPost]
              public ActionResult Edit(WebManageUsers entity)
              {
                  if (ModelState.IsValid)
                  {
                      _webManageUsersRepository.Update<WebManageUsers>(i => new WebManageUsers
                      {
                          Id = entity.Id,
                          LoginName = entity.LoginName
                      });
                      return RedirectToAction("Index");
                  }
                  ModelState.AddModelError("", "請(qǐng)認(rèn)真填寫表單!");
                  return View();
              }

      通過(guò)上面代碼我們可以看到,只是將需要更新的字段進(jìn)行賦值即可!

      回到目錄

      posted @ 2015-04-30 22:22  張占嶺  閱讀(9728)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产免费久久精品99reswag| 67194熟妇在线观看线路| 免费A级毛片无码A∨蜜芽试看| 内射极品少妇xxxxxhd| 国产中文三级全黄| 国产无遮挡又黄又爽高潮| 亚洲肥熟女一区二区三区| 香河县| 日韩在线视频一区二区三区| 午夜三级成人在线观看| 中文字幕国产精品av| 亚洲av片在线免费观看| 色噜噜久久综合伊人一本| 青青草原国产精品啪啪视频| 精品无码久久久久久尤物 | 田林县| 久久涩综合一区二区三区| a级国产乱理伦片在线观看al| 国产普通话对白刺激| 日韩精品视频一二三四区| 亚洲精品日韩在线观看| 欧美成人aaa片一区国产精品| 成人国产精品三上悠亚久久| 久久精品国产99国产精品澳门| 亚洲人成网站观看在线观看 | 人人妻人人澡人人爽曰本| 露脸国产精品自产拍在线观看| 激情国产一区二区三区四区| 亚洲国产制服丝袜先锋| 98日韩精品人妻一二区| 伊人精品成人久久综合| 动漫AV纯肉无码AV电影网| 欧美日韩精品一区二区三区高清视频| 亚洲区精品区日韩区综合区| 成人无码午夜在线观看| 亚洲gay片在线gv网站| 国精品午夜福利不卡视频| 日本三级理论久久人妻电影 | 久久精品亚洲精品国产色婷| 亚洲日本韩国欧美云霸高清| 国产激情第一区二区三区|