2012-10-20 4 views
5

Ich verwende derzeit RavenDB, um ein Objekt zu speichern, das die Instant-Klasse von Noda Time verwendet, um Daten zu speichern.Noda Time Instanzwert wird nicht richtig deserialisiert

RavenDB speichert den Wert als

"ArrivalTime": { "Ticks": 13507658019037497 },

aber wenn Abfrage das Objekt ist es immer null und beginnt am Anfang der Unix Epoche Zeit.

Ich habe versucht, mit dem JsonConvert-Attribut, aber der Leser gibt immer einen Nullwert für den Instant-Typ. Auch wenn ich mehr als ein Attribut verwende, bezieht es sich nur auf das erste.

Sollte ich noda Zeit mit RavenDb verwenden oder einfach auf normales Datetime halten?

dank

Antwort

2

Mit RavenDB 2.5

Wenn Sie in der Lage sind RavenDB 2.5 zu verwenden, dann können Sie die volle Noda Zeit Unterstützung haben und Noda Zeittypen in Ihren Domain-Einheiten verwenden. Sie benötigen die Noda Time extensions for RavenDB.

Mit RavenDB 2,0

Sie sind wahrscheinlich besser dran nicht mit Noda Zeit in Ihren Domain-Entitäten. Verwenden Sie stattdessen die integrierten Typen DateTimeOffset, DateTime und TimeSpan.

Sie können Noda Time in Ihrer Anwendungslogik verwenden, aber nicht in der Persistenzschicht. Die Methoden Instant.ToDateTimeOffset() und Instant.FromDateTimeOffset() in Noda Time sind sehr nützlich, und RavenDB funktioniert ziemlich gut mit Werten. Sie speichert sie im ISO8601-Format und konvertiert sie während der Indexierung ordnungsgemäß in die UTC-Zeit. Dies bedeutet, dass Sie einen Index von Werten ohne Berücksichtigung der Offset-Konvertierung abfragen können.

+0

Das ist ein toller Rat, danke! –

Verwandte Themen