【问题标题】:MongoDB C# DateTimeOffset serializationMongoDB C# DateTimeOffset 序列化
【发布时间】:2016-10-21 02:51:15
【问题描述】:

我使用标准序列化提供程序将 DateTimeOffset 存储在 Mongo DB 中。

在数据库中是这样的:

{
    "_id" : LUUID("1197f7cf-cb83-4047-85f8-6e9f8c8ad24f"),
    "CreatedDateTimeUtc" : [ 
        6.3612613922066e+017.0, 
        0
    ]
}

但是当我尝试在 C# 中反序列化时,会引发以下异常:

System.FormatException:反序列化类 Turnout.Common.Model.Turnout 的 CreatedDateTimeUtc 属性时出错:ReadInt64 只能在 CurrentBsonType 为 Int64 时调用,而 CurrentBsonType 为 Double 时不能调用。

关于如何让它发挥出色的任何想法?

【问题讨论】:

  • 你能提供你用来执行这个反序列化的代码吗?如果 C# 模型是强类型的,您是否也可以提供它,因为您的属性可能没有必要的属性。

标签: c# mongodb serialization


【解决方案1】:

如果您仍然遇到此问题,请编写您自己的序列化程序。查看 DateTimeOffsetSerializer MongoDB.Bson.Serialization.Serializers 了解实现细节。我实际上使用它而不是默认值,因为它包含一个可读的 DateTime。 以这种方式注册:

new BsonStaticsWrapper().RegisterSerializer(typeof(DateTimeOffset), new DateTimeOffsetSerializer(BsonType.Document));

我知道这不是您问题的确切答案,但它可能会帮助您获得答案。它可能会帮助其他人找到解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 2018-07-05
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2018-03-03
    相关资源
    最近更新 更多