Я тестирую несколько сценариев с MongoDb, чтобы посмотреть, как восстановиться после возможных проблем с данными.
У меня есть классы (адреса с набором адресов) со свойством почтового индекса в адресе, который изначально был преобразован в строку. Я сохранил несколько записей адресов и смог их восстановить. нравится, var allAddresses = address.FindAllAs();
Я изменил свойство почтового индекса на int и сохранил некоторые записи. Затем я изменил свойство почтового индекса обратно на строку.
Когда я пытаюсь прочитать коллекцию обратно, я получаю сообщение об ошибке десериализации, как и ожидалось. var allAddresses = address.FindAllAs();
Моя цель — переопределить десериализацию, чтобы в случае возникновения ошибки десериализации поля я мог либо игнорировать ее, либо применить значение по умолчанию.
Я попробовал собственный сериализатор, но он не работает. Мы ценим любые предложения.
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();
}
}