我正在使用MongoDB的C#驱动程序遇到一些奇怪的行为.我正在尝试执行替换多个字段的更新,因此我正在使用ReplaceOneAsync()
API中的方法.我与任何集合的连接都是这样的,WriteConcern.Acknowledged
所以我可以处理因任何原因(例如在这种情况下)数据库无法更新的情况.
有时数据库不会更新记录,但我无法确定原因.在尝试调试这种情况时,我正在查看ReplaceOneResult
从ReplaceOneAsync方法返回的对象,它显示MatchedCount = 1,但是在我的调试器的屏幕截图中看到ModifiedCount = 0:
这怎么可能?如果它匹配我正在尝试替换的一个id,为什么不执行修改?这是否意味着存在某种错误状态导致它无声地失败?它不会抛出任何异常,所以如果是这种情况我怎样才能确定出了什么问题?
这是简单的更新方法:
public virtual async Task<bool> Update(T entity)
{
if (entity.Id == ObjectId.Empty)
throw new ArgumentException("Id must be available and in the database to perform an update.");
ReplaceOneResult result = await this.MongoConnectionHandler.MongoCollection.ReplaceOneAsync(e => e.Id == entity.Id, entity);
return result.ModifiedCount > 0;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2743 次 |
最近记录: |