Tôi đang thử nghiệm một số tình huống với MongoDb để xem cách khôi phục từ các vấn đề dữ liệu có thể xảy ra.Trường Deserializing khi loại được thay đổi bằng trình điều khiển csharp MongoDb
Tôi có các lớp học (Địa chỉ có bộ sưu tập Địa chỉ) với thuộc tính zipcode trong Địa chỉ ban đầu được tạo thành chuỗi. Tôi đã lưu nhiều bản ghi Địa chỉ và có thể truy xuất chúng tất cả. như thế này, var allAddresses = addresses.FindAllAs();
Tôi đã thay đổi thuộc tính mã zip thành int và lưu một số bản ghi. Sau đó tôi đã thay đổi thuộc tính mã zip thành chuỗi.
Khi tôi cố đọc lại bộ sưu tập, tôi nhận được một lỗi deserializing, như mong đợi. var allAddresses = addresses.FindAllAs();
Mục tiêu của tôi là có thể ghi đè quá trình deserialization vì vậy nếu xảy ra lỗi deserialization trường tôi có thể chọn bỏ qua hoặc áp dụng giá trị mặc định.
Tôi đã thử một bộ nối tiếp tùy chỉnh không hoạt động. Mọi lơi đê nghị đêu nên được đanh gia cao.
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();
}
}
nếu một câu trả lời giải quyết vấn đề của bạn, bạn nên chấp nhận câu trả lời. Kiểm tra bên cạnh upvote/downvote –