CurrentBsonType является String, а не когда CurrentBsonType имеет ObjectId - PullRequest
1 голос
/ 28 февраля 2012

"Произошла ошибка при десериализации свойства Property1 класса Class1: ReadString можно вызывать только тогда, когда CurrentBsonType равен String, а не когда 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
}

1 Ответ

1 голос
/ 28 февраля 2012

Возможно, в вашей коллекции есть документы, которые не соответствуют определению вашего класса.Вы можете искать их, используя оболочку mongo (ищите документы, у которых есть ObjectId, где вы ожидаете строку).

Если это не объясняет, вы можете предоставить объявление класса и примердокумент (отображаемый с использованием оболочки mongo), который не будет десериализован должным образом?

...