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>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage