Mongodb 更新C#驱动程序v2中的文档从驱动程序v1迁移

Mongodb 更新C#驱动程序v2中的文档从驱动程序v1迁移,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我的代码使用C#Mongo驱动程序版本1Repository /// <summary> /// Generic update method to update record on the basis of id /// </summary> /// <param name="queryExpression"></param> /// <param name="

我的代码使用C#Mongo驱动程序版本1
Repository

        /// <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)); 
        }
我没有得到文档更新。你知道我的迁移代码有什么问题吗


谢谢

您调用了一个异步方法,而不使用
wait
\u collection.UpdateOneAsync(查询,更新)这不是问题的根本原因,但在这种情况下,您没有适当的异常处理。
等待它或使用相应的同步版本


您可能还希望使用V1驱动程序作为初始版本,并对整个文档进行替换。以下内容应符合您的需要(但未经测试)

。。。
var query=Builders.Filter.Eq(queryExpression,id);
_collection.ReplaceOne(查询、实体);
...

我可以使用异步吗。。等待+异步方法?混在一起?
    /// <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); ;

    }
 public void Update(PostModel post)
        {
            _postRepo.Posts.Update(s => s.Id, post.Id, post);
        }
...
var query = Builders<T>.Filter.Eq(queryExpression, id);
_collection.ReplaceOne(query, entity);
...