2014-01-22 11 views
1

Я переношу субзвуковый проект на PetaPoco. Когда Subsonic вытаскивает столбцы DateTime из базы данных, он возвращает DateTime как DateTimeKind.Unspecified. Когда PetaPoco увлажняет POCO, он устанавливает DateTimes как UTC. сайтКак настроить PetaPoco для создания DateTimes с типом DateTimeKind.Unspecified вместо UTC?

TOPTEN Software, на самом деле имеет в блоге, упоминая этот точный вопрос: http://www.toptensoftware.com/Articles/84/PetaPoco-Value-Conversions-and-UTC-Times

Но есть аннотация с указанием решения описанного устарела, а также ссылки на другую статью упоминания картографов. Я не могу понять, как добавить mappers в мое решение для решения этой проблемы.

ответ

1

Если вы добавите этот атрибут в свойства DateTime объекта POCO Object, он установит для вас DateTimeKind в UTC (однако он не делает никаких преобразований).

[Column(ForceToUtc=true)] 

Если бы рыть через источник, чтобы найти это

Для конвертации в UTC, я изменил PetaPoco:

PetaPoco.cs - Ln 3738

Изменить этот:

return delegate(object src) { return new DateTime(((DateTime)src).Ticks, DateTimeKind.Utc); }; 

К этому:

return delegate(object src) { return new DateTime(((DateTime)src).ToUniversalTime().Ticks, DateTimeKind.Utc); }; 

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

return delegate(object src) { return new DateTime(((DateTime)src).Ticks, DateTimeKind.Unspecified); }; 

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

  • Нет связанных вопросов^_^