中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

MongoDB學習(xi)筆記~批量(liang)插入方法的實現

回到目錄

批(pi)量插入在(zai)(zai)(zai)EF時代大(da)叔就自己(ji)封裝過,原(yuan)理是將多次(ci)(ci)SQL連接和(he)多次(ci)(ci)向SQL發送的(de)(de)(de)指(zhi)令減少到1次(ci)(ci),或者(zhe)1000條(tiao)數據1次(ci)(ci),而(er)對于EF產生的(de)(de)(de)語(yu)句(ju)來(lai)說,這(zhe)無疑是性能高效的(de)(de)(de),因(yin)為EF這(zhe)邊在(zai)(zai)(zai)處理時,每個語(yu)句(ju)都(dou)會向SQL發送一次(ci)(ci),當(dang)然就算它(ta)是在(zai)(zai)(zai)一個SQL連接里,向SQL發送N多條(tiao)指(zhi)令,也(ye)是性能低下的(de)(de)(de)。

對于(yu)MongoDB來(lai)(lai)說也是一樣,如何(he)減(jian)少(shao)與Mongo通信的(de)(de)次數,是提(ti)高(gao)插入操作的(de)(de)前提(ti),還好,官方驅動(dong)為我們繼承(cheng)了這個功能,使用WriteModel類型來(lai)(lai)存(cun)儲要插入的(de)(de)集合,使用InsertOneModel類型來(lai)(lai)承(cheng)載要插入的(de)(de)對象,這一切都(dou)很直觀,代碼也很清(qing)晰(xi)!

     public void Insert(IEnumerable<TEntity> item)
        {
            var list = new List<WriteModel<TEntity>>();
            foreach (var iitem in item)
            {
                list.Add(new InsertOneModel<TEntity>(iitem));
            }
            _table.BulkWriteAsync(list).Wait();
        }

而測試完(wan)批量添加(jia)后,就做了批量更新和刪(shan)除,不過遺憾的(de)(de)是,都失敗的(de)(de),下(xia)面公(gong)開一個失敗的(de)(de)代碼(ma),如果大家(jia)有解決(jue)方案,歡(huan)迎留言!

  public void Update(IEnumerable<TEntity> item)
        {
            var list = new List<WriteModel<TEntity>>();
            foreach (var iitem in item)
            {
                var query = new QueryDocument("_id", new ObjectId(typeof(TEntity).GetProperty(EntityKey).GetValue(iitem).ToString()));
               list.Add(new UpdateOneModel<TEntity>(query, Builders<TEntity>.Update.Combine(GeneratorMongoUpdate(iitem))));
            }
            _table.BulkWriteAsync(list).Wait();
       
        }

        public void Delete(IEnumerable<TEntity> item)
        {
            var list = new List<WriteModel<TEntity>>();
            foreach (var iitem in item)
            {
                var query = new QueryDocument("_id", new ObjectId(typeof(TEntity).GetProperty(EntityKey).GetValue(iitem).ToString()));
                list.Add(new DeleteOneModel<TEntity>(query));
            }
            _table.BulkWriteAsync(list).Wait();
          
        }

回到目錄

posted @ 2015-05-29 21:59  張占嶺  閱讀(20753)  評論(1)    收藏  舉報