回到目錄
說它是批量操作,就是說将集合對象一次送出到伺服器,并對資料進行持久化,如果您的代碼是一次一次的送出,那不算是批量操作!在之前的mongodb倉儲中并沒有對批量更新和批量删除進行實作,而今天在項目中,還是實作了這種批量的操作,并且已經通過測試,下面公開一下源代碼
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();
}
public void Update(IEnumerable<TEntity> item)
{
var list = new List<WriteModel<TEntity>>();
foreach (var iitem in item)
{
QueryDocument queryDocument = new QueryDocument("_id", new ObjectId(typeof(TEntity).GetProperty(EntityKey).GetValue(iitem).ToString()));
list.Add(new UpdateOneModel<TEntity>(queryDocument, 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)
{
QueryDocument queryDocument = new QueryDocument("_id", new ObjectId(typeof(TEntity).GetProperty(EntityKey).GetValue(iitem).ToString()));
list.Add(new DeleteOneModel<TEntity>(queryDocument));
}
_table.BulkWriteAsync(list).Wait();
}
在程式實作之中,我們使用了WriteModel泛型對象,這将存儲要插入,更新和删除的對象,對于插入來說,隻有一個參數就是它的實體集合,而對象更新來說,它不僅有實體集合而且還有對應的條件QueryDocument,而對于删除操作來說,隻提供QueryDocument即可!
作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!
