2017-11-21 6 views
2

storeDateTimeAsTicks ist das Standardverhalten in den letzten SQLite Net-Implementierungen und es hat auch einen Leistungsvorteil gegenüber dem Speichern als String.SQLite Net DateTimeKind ist beim Lesen eines Datums aus der Datenbank nicht spezifiziert

Leider beim Speichern der DateTime-Ticks in der Datenbank ignoriert es die Zeitzone und beim Zurücklesen der DateTime aus der Datenbank initialisiert das DateTime-Objekt mit den Ticks das DateTimeKind des Objekts zu unspezifiziert.

Angesichts der Funktionsweise von DateTime bedeutet dies, dass zum Abrufen einer DateTime mit DateTimeKind.Local aus der Datenbank vor dem Speichern in die Datenbank in UTC konvertiert und nach dem Lesen aus der Datenbank in die lokale Zeit konvertiert werden muss.

Gibt es eine Möglichkeit, SQLite Net allein mit dem Roundtrip zu beschäftigen? Ich möchte die Vorverarbeitung und Nachbearbeitung von Objekten während der Serialisierung und Deserialisierung vermeiden.

Antwort

0

Die Lösung besteht darin, DateTimeOffset anstelle von DateTime zu verwenden. Mit DateTimeOffset werden die Uhrzeit und die Zeitzone gespeichert und Sie können die Eigenschaften LocalDateTime und UtcDateTime nach Bedarf verwenden.

Verwandte Themen