2014-07-04 3 views
1

Я использую драйвер MongoDB C#, перенося некоторые документы из нашей текущей базы данных в MongoDB и наоборот. Проблема, которую я получаю (вкратце): хотя метод извлечения DateTime из документа MongoDB возвращает правильную дату/время, при присвоении атрибуту DateTime моего объекта C# он возвращается к 01/01/0001 12:00:00 AM, то есть до минимального значения DateTime.C# (и MongoDB) Преобразование DateTime (от объекта BSON to C#)

Подробнее:

GetDateTime запрашивает MongoDB (RDoc является BSON документ) и возвращающие правильный дата/время:

Console.WriteLine(GetDateTime(rdoc, "recordedDate")); 

Выход есть:

6/3/2010 10:00:00 AM

Я присваиваю возвращаемое значение моему объекту C#:

doc.RecordedDate = GetDateTime(rdoc, "recordedDate"); 

но когда этот атрибут, используя (г мой C# объект):

Console.WriteLine(r.UserID + "," + r.DateCreated); 

я получаю: 123456,1/1/0001 12:00:00 AM

Я настраиваю мой DateTime поле с:

set{ recordedDate = value.ToLocalTime(); } 

Просто упомянуть здесь, что я на самом деле не обновляем нашу базу данных при создании C# документы, просто держать эти документы в памяти, то resaving их Монго (не спрашивайте), просто Ф.О. в целях тестирования. Это не должно влиять на проблему, которую я испытываю, все остальные поля работают нормально.

Я знаю, что есть некоторая missmatch между объектами DateTime из BSON и .NET (BSON урежет количество тиков или что-то), но не, если это является причиной моей проблемы ...

Btw, я только начал используя C# три дня назад, поэтому, если мне не хватает чего-то основного и очевидного здесь, пожалуйста, укажите его мягко :).

ответ

0

У вас, похоже, есть несоответствие между тем, как вы храните свои данные.

Это обновление свойство doc.RecordedDate:

doc.RecordedDate = GetDateTime(rdoc, "recordedDate"); 

Но вы читаете из свойства DateCreated:

Console.WriteLine(r.UserID + "," + r.DateCreated) 

И это пишет в третьей переменной 'recordedDate':

set{ recordedDate = value.ToLocalTime(); } 

Вы пишете вещь с именем RecordedDate, b чтение из вещи с именем DateCreated. Где вы на самом деле обновляете DateCreated? Какова связь между doc.RecordedDate и r.DateCreated? Какова связь между записанными датами и doc.RecordedDate или r.DateCreated?

+0

И все! (спасибо за указание) Класс моего объекта r наследует класс, содержащий свойство DateCreated, но этот никогда не был установлен, поэтому я получил значение даты min. – Aineko

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