Как использовать метод SetSerializationOptions в официальном mongo-csharp-драйвере? - PullRequest
0 голосов
/ 16 ноября 2011

Я использовал его так же, как:

  DateTimeSerializationOptions op = new DateTimeSerializationOptions(true);
      cursor = mc.Find(queryArg).SetLimit(limit).SetSkip(skip).SetSortOrder(sort).SetSerializationOptions(op);

он установил dateOnly, но, похоже, не работает, я сделал ошибки?

1 Ответ

0 голосов
/ 16 ноября 2011

SetSerializationOptions обычно используется для глобального определения способа сериализации определенного типа. В вашем коде вы пытаетесь использовать его для десериализации (чтение).

Я не уверен, почему вы можете установить опции сериализации на MongoCursor, но, как сказано в документации: «Требуется только в редких случаях». Я посмотрел на источник, и драйвер, похоже, в значительной степени его игнорирует.

Возможно, вы хотите изменить поведение сериализации:

Использование атрибута

Самый простой способ сериализации только компонента даты - использовать атрибут:

public class Test
{
    [BsonDateTimeOptions(DateOnly = true)]
    public DateTime SomeDate {get; set;}
}

Использование карты классов

Кроме того, вы также можете зарегистрировать это вручную:

BsonClassMap<Test> map = new BsonClassMap<Test>();
map.MapProperty(p => p.SomeDate).
          SetSerializationOptions(DateTimeSerializationOptions.DateOnlyInstance);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...