Инвариантные даты с WCF RIA Services - PullRequest
0 голосов
/ 24 августа 2010

Есть ли какой-нибудь способ запретить службам Silverlight / RIA преобразовывать объект datetime на проводе?

В настоящий момент я вижу, что для datetime установлено значение 'Local' или 'Unspecified', преобразованное в местное времясервер, когда они отправляются по проводной сети.

Например:

Клиент и сервер находятся в формате UTC -04: 00: 00.

  • Iиспользуйте DateTime.Today (вид Local или Unspecified, это не имеет значения) на клиенте Silverlight.Я вижу 23/08/2010 00: 00: 00.
  • Я отправляю свои изменения и смотрю, как данные передаются по проводам.Поле указывается в 23.08.2010 00:00:00 (-04: 00: 00).

Отлично.Теперь я меняю своего клиента на UTC +12: 00: 00

  • Я использую DateTime.Today на клиенте, и теперь я вижу 24/08/2010 00: 00: 00.
  • ОДНАКО - я отправляю свои изменения и снова просматриваю данные.Теперь я вижу 23/08/2010 08:00:00 (-04: 00: 00).

Так что очевидно, что сериализатор конвертирует в местное время сервера, которое яне хочу.Значение, которое я хочу указать в БД: 24/08/2010 00: 00: 00.

Использование UTC не является хорошим вариантом для этого поля, поскольку база данных является частью нашего старого приложения, а столбец содержит инвариантные даты.в это время.Я не хочу начинать вставку времени UTC вместе с существующими данными.

Есть идеи?

Заранее спасибо

1 Ответ

2 голосов
/ 24 августа 2010

Если я создаю DateTime следующим образом, он работает:

new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified).Date;
...