2016-07-23 2 views
1

Мой код с использованием C# Монго Driver Version1 RepositoryОбновление документа в драйвере C# v2 перейти от Driver v1

 /// <summary> 
     /// Generic update method to update record on the basis of id 
     /// </summary> 
     /// <param name="queryExpression"></param> 
     /// <param name="id"></param> 
     /// <param name="entity"></param> 
     public void Update(Expression<Func<T, string>> queryExpression, string id, T entity) 
     { 
      var query = Query<T>.EQ(queryExpression, id); 
      _collection.Update(query, Update<T>.Replace(entity)); 
     } 

И я изменить код на C версии # водителя 2

/// <summary> 
    /// Generic update method to update record on the basis of id 


    /// </summary> 
    /// <param name="queryExpression"></param> 
    /// <param name="id"></param> 
    /// <param name="entity"></param> 
    public void Update(Expression<Func<T, string>> queryExpression, string id, T entity) 
    { 
     // var query = Query<T>.EQ(queryExpression, id); 
     //_collection.Update(query, Update<T>.Replace(entity)); 


     var query = Builders<T>.Filter.Eq(queryExpression, id); 
     var update = Builders<T>.Update.Set(queryExpression, id); 
     _collection.UpdateOneAsync(query, update); ; 

    } 

я назвал, используя (controller):

public void Update(PostModel post) 
     { 
      _postRepo.Posts.Update(s => s.Id, post.Id, post); 
     } 

я не получил документ update.Do вы знаете, белый at - проблема с моим кодом миграции.

Благодаря

ответ

1

Вы называете асинхронный метод без await с _collection.UpdateOneAsync(query, update);, которая не является основной причиной вашей проблемы, но у вас нет надлежащей обработки в этом случае исключения.
Либо await он или использовать соответствующую синхронную версию UpdateOne


Вы, вероятно, также довольно хотите использовать ReplaceOne в качестве первоначальной версии с драйвером V1 также сделала целую замену документов. Следующие требования должны соответствовать вашим потребностям (не проверены)

... 
var query = Builders<T>.Filter.Eq(queryExpression, id); 
_collection.ReplaceOne(query, entity); 
... 
+0

Спасибо за помощь, это работает. – kn3l

+0

Могу ли я использовать async .. wait + асинхронный метод? смешать вместе? – kn3l

 Смежные вопросы

  • Нет связанных вопросов^_^