2016-10-21 4 views
2

Ich speichere ein in einer Mongo DB mit den Standard-Serialisierungsprovidern.MongoDB C# DateTimeOffset Serialisierung

In der Datenbank sieht es wie folgt aus:

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

Aber wenn ich versuche und deserialisieren in C# die folgende Ausnahme ausgelöst:

System.FormatException: Ein Fehler ist aufgetreten, während die CreatedDateTimeUtc Deserialisieren Eigenschaft der Klasse Turnout.Common.Model.Turnout: ReadInt64 kann nur aufgerufen werden, wenn CurrentBsonType Int64 ist, nicht wenn CurrentBsonType Double ist.

Irgendwelche Ideen, wie man es gut spielen kann?

+0

Können Sie bitte den Code angeben, den Sie für diese Deserialisierung verwenden? Können Sie Ihr C# -Modell auch bereitstellen, wenn es stark typisiert ist, da Sie möglicherweise nicht über die erforderlichen Attribute für Ihre Eigenschaften verfügen. – pieperu

Antwort

0

Wenn dieses Problem weiterhin auftritt, schreiben Sie Ihren eigenen Serializer. Sehen Sie sich die MongoDB.Bson.Serialization.Serializers von DateTimeOffsetSerializer für Implementierungsdetails an. Ich benutze das anstelle der Standardeinstellung, da es eine lesbare DateTime enthält. es auf diese Weise registrieren:

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

Ich weiß, das auf Ihre Frage ist nicht die genaue Antwort, aber es könnte Sie es helfen. Und es könnte anderen dabei helfen, einen Workaround zu finden.