2012-10-20 27 views
5

Tôi hiện đang sử dụng RavenDB để lưu trữ một đối tượng sử dụng lớp Instant của Noda Time để lưu trữ ngày.Giá trị thể hiện thời gian Noda không deserializing một cách chính xác

cửa hàng RavenDb giá trị như

"ArrivalTime": { "Bọ ve": 13507658019037497 },

nhưng khi truy vấn đối tượng nó luôn luôn là null và bắt đầu vào đầu thời gian kỷ nguyên unix.

Tôi đã thử sử dụng thuộc tính JsonConvert, nhưng trình đọc luôn trả về giá trị null cho loại Instant. Ngoài ra nếu tôi sử dụng nhiều hơn một thuộc tính, nó chỉ đề cập đến thuộc tính đầu tiên.

Tôi có nên sử dụng thời gian noda với RavenDb hoặc chỉ dính vào giờ bình thường không?

nhờ

Trả lời

2

Sử dụng RavenDB 2,5

Nếu bạn có thể sử dụng RavenDB 2.5, sau đó bạn có thể có hỗ trợ Noda Time đầy đủ và sử dụng các loại Noda Thời gian vào đơn vị miền của bạn. Bạn sẽ cần số Noda Time extensions for RavenDB.

Sử dụng RavenDB 2.0

Bạn đang có lẽ tốt hơn không sử dụng Noda Thời gian vào đơn vị miền của bạn. Thay vào đó, hãy sử dụng các loại được tích hợp sẵn như DateTimeOffset, DateTimeTimeSpan.

Bạn có thể sử dụng Thời gian Noda trong logic ứng dụng của bạn, nhưng không phải trong lớp kiên trì. Các phương thức Instant.ToDateTimeOffset()Instant.FromDateTimeOffset() trong Thời gian Noda rất hữu ích và RavenDB hoạt động khá tốt với các giá trị DateTimeOffset. Nó lưu trữ chúng ở định dạng ISO8601 và chuyển đổi đúng thời gian UTC trong khi lập chỉ mục. Điều này có nghĩa là bạn có thể truy vấn chỉ mục của các giá trị DateTimeOffset mà không tính đến chuyển đổi bù trừ.

+0

Đó là lời khuyên tuyệt vời cảm ơn bạn! –

Các vấn đề liên quan