更新文件V2从驱动器V1迁移
问题描述:
使用C#蒙戈驱动程序版本1 Repository
更新文件V2从驱动器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 you know wh at是我的迁移代码的问题。
感谢
答
你叫不await
与_collection.UpdateOneAsync(query, update);
异步方法,它是不是你的问题的根本原因,但你有没有适当的例外在这种情况下处理。
无论await
或使用相应的同步版本UpdateOne
你可能也更愿意使用ReplaceOne作为与V1司机最初的版本也做了一个整个文件替换。以下应该适合您的需求(未经测试)
...
var query = Builders<T>.Filter.Eq(queryExpression, id);
_collection.ReplaceOne(query, entity);
...
感谢您的帮助,它的工作原理。 – kn3l
我可以使用async .. await +异步方法吗?掺在一起? – kn3l