Сериализация и управление версиями

Мне нужно сериализовать некоторые данные в строку. Затем строка сохраняется в БД в специальном столбце SerializeData.

Я создал специальные классы, которые используются для сериализации.

[Serializable]
public class SerializableContingentOrder
{
    public Guid SomeGuidData { get; set; }
    public decimal SomeDecimalData { get; set; }
    public MyEnumerationType1 EnumData1 { get; set; }
}

Сериализация:

protected override string Serialize()
{
    SerializableContingentOrder sco = new SerializableContingentOrder(this);

    MemoryStream ms = new MemoryStream();
    SoapFormatter sf = new SoapFormatter();
    sf.Serialize(ms, sco);
    string data = Convert.ToBase64String(ms.ToArray());
    ms.Close();
    return data;
}

Десериализация:

protected override bool Deserialize(string data)
{
    MemoryStream ms = new MemoryStream(Convert.FromBase64String(data).ToArray());
    SoapFormatter sf = new SoapFormatter();

    SerializableContingentOrder sco = sf.Deserialize(ms) as SerializableContingentOrder;
    ms.Close();
    return true;
}

Теперь я хочу иметь поддержку версий. Что произойдет, если я изменюSerializableContingentOrder учебный класс. Я хочу иметь возможность добавлять новые поля в будущем.

Должен ли я перейти на сериализацию DataContract? Пожалуйста, дайте мне короткий фрагмент?