我目前正在使用 RavenDB 来存储一个使用 Noda Time 的 Instant 类来存储日期的对象。
RavenDb 将值存储为
“到达时间”:{ “蜱”:13507658019037497 },
但是当查询该对象时,它始终为 null 并且从 unix 纪元时间开始。
我尝试使用 JsonConvert 属性,但读取器始终为 Instant 类型返回空值。另外,如果我使用多个属性,它仅指第一个。
我应该在 RavenDb 中使用 noda 时间还是只坚持常规日期时间?
谢谢
最佳答案
使用 RavenDB 2.5
如果您能够使用 RavenDB 2.5,那么您可以获得完整的 Noda Time 支持并在您的域实体中使用 Noda Time 类型。您将需要 Noda Time extensions for RavenDB .
使用RavenDB 2.0
您最好不要在域实体中使用 Noda Time。相反,请使用内置类型,例如 DateTimeOffset
、DateTime
和 TimeSpan
。
您可以在应用程序逻辑中使用 Noda Time,但不能在持久层中使用。 Noda Time 中的 Instant.ToDateTimeOffset()
和 Instant.FromDateTimeOffset()
方法非常有用,RavenDB 可以很好地处理 DateTimeOffset
值。它将它们存储为 ISO8601 格式,并在索引期间正确转换为 UTC 时间。这意味着您可以查询 DateTimeOffset
值的索引,而不考虑偏移量转换。
关于json.net - Noda 时间实例值未正确反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12993426/