MongoDB C# DateTimeOffset serialization
本文关键字:serialization DateTimeOffset MongoDB | 更新日期: 2023-09-27 18:14:19
我正在使用标准序列化提供程序在mongodb中存储DateTimeOffset
。
在数据库中是这样的:
{
"_id" : LUUID("1197f7cf-cb83-4047-85f8-6e9f8c8ad24f"),
"CreatedDateTimeUtc" : [
6.3612613922066e+017.0,
0
]
}
但是当我尝试在c#中反序列化时,抛出了以下异常:
系统。FormatException:在反序列化类Turnout.Common.Model.Turnout: ReadInt64的CreatedDateTimeUtc属性时发生错误,只能在CurrentBsonType为Int64时调用,而不能在CurrentBsonType为Double时调用。
有什么好主意吗?
如果您仍然遇到此问题,请编写您自己的序列化器。请查看DateTimeOffsetSerializer mongodb . bson . serialize . serializer了解实现细节。我实际上使用它而不是默认值,因为它包含一个可读的DateTime。这样注册:
new BsonStaticsWrapper().RegisterSerializer(typeof(DateTimeOffset), new DateTimeOffsetSerializer(BsonType.Document));
我知道这不是你问题的确切答案,但它可能会帮助你得到它。它可能会帮助其他人找到解决方法。
在现代,MongoDB使这更容易
BsonSerializer.RegisterSerializer(typeof(DateTimeOffset), new DateTimeOffsetSerializer(BsonType.DateTime));
之后,你的数据库实体将有DateTimeOffset序列化如下:
CreatedAt: 2012-01-26T12:15:55.000+00:00