Sto testando un numero di scenari con MongoDb per vedere come recuperare da eventuali problemi relativi ai dati.Deserializzazione campo quando il tipo viene modificato utilizzando il driver csharp MongoDb
Ho classi (Indirizzi con raccolta di indirizzo) con una proprietà di codice di avviamento postale in Indirizzo che originariamente era stata convertita in stringa. Ho salvato più record di indirizzi e li ho recuperati tutti bene. in questo modo, var allAddresses = addresses.FindAllAs();
Ho modificato la proprietà del codice di avviamento postale su int e salvato alcuni record. Quindi ho cambiato la proprietà del codice di avviamento postale in stringa.
Quando tento di leggere la raccolta, si verifica un errore di deserializzazione, come previsto. var allAddresses = addresses.FindAllAs();
Il mio obiettivo è di essere in grado di ignorare la deserializzazione, quindi se si verifica un errore di deserializzazione del campo, posso scegliere di ignorarlo o applicare un valore predefinito.
Ho provato un serializzatore personalizzato, che non funziona. Tutti i suggerimenti sarebbero apprezzati.
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();
}
}
se una risposta risolve il problema, è necessario accettare la risposta. Il controllo accanto a upvote/downvote –