C# MongoDB BulkWriteAsync 抛出 System.InvalidCastException

问题描述 投票:0回答:1

当我们尝试将对象保存到 MongoDB 时,我们得到了

System.InvalidCastException
。该错误是偶发的,但也毫无意义。错误信息是:

无法将“MongoDB.Bson.BsonObjectId”类型的对象转换为“MongoDB.Bson.BsonBoolean”类型。

据我在代码中所知,我们并没有尝试将对象 Id 转换为布尔值。 我们的更新代码是这样的:

foreach (var update in updates)
{
    update.UpdateVersionNumber();
    var updateFilterDef = Builders<AmazonOrder>.Filter;
    var updateFilter = updateFilterDef.Eq(o => o.Id, update.Id) &
        (updateFilterDef.Eq(o => o.Version, update.LoadedVersion) |
            updateFilterDef.Exists(o => o.Version, false));
        list.Add(new ReplaceOneModel<AmazonOrder>(updateFilter, update));
}

然后我们只需调用:

var result = await _context.Orders.BulkWriteAsync(list, cancellationToken: cancellationToken);

我们拥有的堆栈跟踪是:

bool AsBooleanGetter(object)
Called from: JsonPropertyInfoOfT.cs in bool JsonPropertyInfo<T>.GetMemberAndWriteJson(object obj, ref WriteStack state, Utf8JsonWriter writer)

什么会导致这个问题?

c# mongodb serialization mongodb-.net-driver
1个回答
0
投票

在插入数据库之前,将整个虚拟机转换为“ToBsonDocument()”并保存。

© www.soinside.com 2019 - 2024. All rights reserved.