json.net - Noda 时间实例值未正确反序列化

标签 json.net ravendb nodatime

我目前正在使用 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。相反,请使用内置类型,例如 DateTimeOffsetDateTimeTimeSpan

您可以在应用程序逻辑中使用 Noda Time,但不能在持久层中使用。 Noda Time 中的 Instant.ToDateTimeOffset()Instant.FromDateTimeOffset() 方法非常有用,RavenDB 可以很好地处理 DateTimeOffset 值。它将它们存储为 ISO8601 格式,并在索引期间正确转换为 UTC 时间。这意味着您可以查询 DateTimeOffset 值的索引,而不考虑偏移量转换。

关于json.net - Noda 时间实例值未正确反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12993426/

相关文章:

c# - 跨多个嵌套属性的ravendb索引

c# - 计算多行的平均日期差异

c# - 使用 Json.NET 使用新的部分 JSON 数据修改现有对象

c# - Json.net反序列化具有并发集合的复杂对象

RavenDB计算平均值

ravendb - RavenDB 中的 System.NotSupportedException : 'Optimistic concurrency for ' Taxes/353-A' is not supported when using a cluster transaction.'

c# - JSON 属性到数组 C#

c# - 反序列化集合时如何让 json.net 排除空值?

c# - 如何使用 NodaTime 来将文化的 ShortDatePattern 转换为字符串格式?

c# - 将纪元时间戳转换为东部时间并使用 Nodatime 反转的优雅方法