Я использую официальный драйвер 10gen C # для mongoDB.У меня есть некоторый код, который устанавливает сопоставления BSON, он запускается один раз при запуске приложения:
BsonClassMap.RegisterClassMap<Review>(cm =>
{
cm.AutoMap();
cm.MapProperty(c => c.Date)
.SetSerializationOptions(new DateTimeSerializationOptions{DateOnly = true});
cm.UnmapProperty(c => c.Author);
});
Это прекрасно работает, когда Review является встроенным документом и сохраняется вместе с его родителем.Однако сейчас я пытаюсь обновить конкретный обзор, и он включает в себя некоторое ручное кодирование, например так (волшебные строки, тьфу):
collection.Update(query,
Update.Set("Reviews.$.Date", review.Date)
.Set("Reviews.$.Rating", review.Rating)
.Set("Reviews.$.Title", review.Title)
.Set("Reviews.$.Comment", review.Comment)
);
Это также работает ... Но это не учитывает настройки сериализации дляDateTime в классе Review и, по-видимому, также сохраняет временную часть (даже если это будет полночь, начиная с review.Date == DateTime.Today
).Затем, когда я пытаюсь получить этот документ, я получаю исключение: [FileFormatException: TimeOfDay component for DateOnly DateTime value is not zero]
.
Как мне это исправить?