2017-07-16 29 views
0

前司機2.0我能夠根據不同的業務邏輯來創建更新語句像MongoDB的C#驅動程序的更新問題

var update = new UpdateBuilder(); 
    update.set("FN","Devesh") 
    if(true) 
     update.set("MN","kumar") 

因爲我已經升級到2.0版本的類似的方法是這樣

var update = Builders<BsonDocument>.Update; 
    var updateQuery = update.Set("FN", "Devesh"); 
    if(true) 
     updateQuery.set("MN","kumar") 

現在只更新「FN」而不是「MN」。看起來像它不更新同一個對象。任何想法如何實現相同。

我正在使用C#官方驅動程序。

UPDATE

var update = Builders<BsonDocument>.Update; 
    var updateQuery = update.Set("FN", "Devesh"); 
    if(true) 
     updateQuery = updateQuery.set("MN","kumar") 

按預期工作,但它似乎是太醜陋,容易出錯。我們能以更好的方式實現嗎?

回答

0

我相信這可能是一個更易於管理的解決方案爲您

var updateList = new List<UpdateDefinition<TProduct>>(); 

updateList.Add(Builders<BsonDocument>.Update.Set("FN", "Devesh")); 

if (true) 
{ 
    updateList.Add(Builders<BsonDocument>.Update.Set("MN", "kumar")); 
} 

var combinedUpdates = Builders<BsonDocument>.Update.Combine(updateList); 

在這之後您可以使用combinedUpdates爲你經常updateDefinition。

相關問題