Feld wird deserialisiert, wenn der Typ mit dem MongoDb-csharp-Treiber geändert wird
Ich teste eine Reihe von Szenarien mit MongoDb, um herauszufinden, wie Sie mögliche Datenprobleme beheben können.
Ich habe Klassen (Adressen mit Auflistung von Adressen) mit einer Postleitzahl-Eigenschaft in Adresse, die ursprünglich als Zeichenfolge umgewandelt wurde. Ich habe mehrere Adressdatensätze gespeichert und konnte sie alle problemlos abrufen. so var allAddresses = address.FindAllAs ();
Ich habe die Postleitzahl-Eigenschaft in int geändert und einige Datensätze gespeichert. Ich habe dann die Postleitzahl-Eigenschaft wieder auf string geändert.
Wenn ich versuche, die Sammlung zurückzulesen, wird wie erwartet ein Fehler beim Deserialisieren angezeigt. var allAddresses = address.FindAllAs ();
Mein Ziel ist es, die Deserialisierung überschreiben zu können. Wenn also ein Fehler bei der Feld-Deserialisierung auftritt, kann ich entweder diese ignorieren oder einen Standardwert anwenden.
Ich habe einen benutzerdefinierten Serializer ausprobiert, der nicht funktioniert. Anregungen wäre dankbar.
<code>public class MyCustomSerializer : BsonBaseSerializer { public override object Deserialize(BsonReader bsonReader, Type nominalType, IBsonSerializationOptions options) { if (bsonReader.CurrentBsonType != BsonType.String) { return string.Empty; } return bsonReader.ReadString(); } public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { bsonWriter.WriteStartDocument(); bsonWriter.WriteName("ZipCode"); bsonWriter.WriteString(value.ToString()); bsonWriter.WriteEndDocument(); } } </code>