Muhtemel veri sorunlarından nasıl kurtulacağımı görmek için MongoDb ile birkaç senaryoyu test ediyorum.MongoDb csharp sürücüsü türünü kullanarak tür değiştirilirken serileştirme alanı
Özgün olarak dize olarak atanmış bir zipcode özelliğine sahip sınıflarım var (Adres topluluğuna sahip adresler). Birden çok Adres kaydı kaydettim ve hepsini alabildim. bunu beğendi, var allAddresses = address.FindAllAs();
Posta kodu özelliğini int olarak değiştirdim ve bazı kayıtları kaydettim. Ardından posta kodu özelliğini tekrar dizeye değiştirdim.
Koleksiyonun arkasını okumaya çalıştığımda, beklendiği gibi bir serpme hatası alıyorum. var allAddresses = address.FindAllAs();
Amacım, seri hale getirme işlemini geçersiz kılabilmek, böylece bir alan serileştirme hatası meydana gelirse, onu yok saymayı veya varsayılan bir değer uygulamayı seçebilirim.
Çalışmayan bir özel serileştirici denedim. Herhangi bir öneri takdir edilecektir.
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();
}
}
, sen cevabı kabul etmelidir:
benim test programının tam kaynak kodu mevcuttur. –