2015-01-08 5 views
6

Я использую последнюю версию C# -driver для MongoDB. Я добавил следующий код в моей программе сериализовать в CamelCase:Ошибки десериализации после добавления пакета конвенции Camelcase

var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; 
ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); 

Однако, я получаю проблемы при попытке запросить документы после того, как с помощью сериализации. Например:

var query = _collection.AsQueryable<TimeSeries>(); 
Console.WriteLine(query.ToJson()); 

возвращает следующее:

{ "_id" : ObjectId("54af0e848c27be15fc47a0d9"), "Name" : null, "Time" : null } 

т.е., все свойства, кажется, быть пустым для идентификатора, за исключением.

Объект сериализован правильно, имена полей находятся в шкафу верблюда («имя» и «время»), и каждый документ содержит правильные данные («имя»: «Тест 1» и «время»: 2014).

Похоже, проблема заключается в том, что функция запроса не понимает, что поля находятся в CamelCase и поэтому возвращает нуль. Поэтому я не могу десериализации какие-либо предметы.

есть ли способ избежать этой ошибки?

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

4

Мне удалось решить эту проблему. Проблема заключалась в том, что я определил пакет соглашений после создания соединения MongoDB. он был решен путем регистрации пакета Конвенции до, инициализирующего соединение с MongoDB.

Смежные вопросы