В моем решении сериализовать данные с моделью и сохранить в виде битового массива в SQL, а затем получить битовый массив и затем десериализовать с той же моделью. В модели мы сделали одно изменение. Существующее свойство изменилось на сокращенное, как показано ниже.
Существующий код
[Serializable()]
public abstract class SearchResultModel : ISearchResultModel
{
private Guid id;
public Guid ID
{
get { return this.id; }
set { this.id = value; }
}
}
И его изменили, как показано ниже
[Serializable()]
public abstract class SearchResultModel : ISearchResultModel
{
public Guid ID { get; set; }
}
Данные сериализуются и десериализуются как с новой, так и со старой моделью. Но проблема в том, что когда мы получаем сериализованный битовый массив старой модели, пытающийся десериализоваться с новой моделью, идентификатор становится GUID.Empty
.
Код для сериализации и десериализации не изменился.
---------------For Deserialize-----
MemoryStream stream = new MemoryStream(searchResultInfoData);
stream.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
var searchResultInfo = (SearchResultModel)formatter.Deserialize(stream);
stream.Flush();
stream.Close();
return searchResultInfo;
---------------For Serialize-----
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, instance); //instance type is Object
stream.Seek(0, 0);
stream.Position = 0; //Return to start
byte[] byteArray = stream.ToArray();
stream.Flush();
stream.Close();
return byteArray;
С данными обеих моделей уже сохранены. Как мы можем решить это? Я что-то пропустил?