“反序列化类Class1的Property1属性时发生错误:只能在CurrentBsonType为String时调用ReadString,而不能在CurrentBsonType为ObjectId时调用。”
我将bsonid放在类的字符串guid上并映射该类并对其进行序列化,但当我尝试将我的对象从bsondocument反序列化回类时,它会给我这个错误。
我该如何解决这个问题?
public class Class1
{
[BsonId]
public string ClassGuid { get; private set; }
}
然后映射班级:
if (!BsonClassMap.IsClassMapRegistered(typeof(WordOntology)))
{
BsonClassMap.RegisterClassMap<WordOntology>();
}
然后反序列化
MongoCursor<Class1> _returnResults = _collection.FindAs<Class1>(_query);
然后循环:
foreach(BsonDocument _document in _returnResults)
{
//exception here
}
答案 0 :(得分:1)
您的集合中可能存在与您的类定义不匹配的现有文档。您可以使用mongo shell查找它们(查找具有您期望字符串的ObjectId的文档)。
如果这不能解释它,你能提供你的类声明和一个不会正确反序列化的示例文档(使用mongo shell显示)吗?