更改对象表单后更新数据库的序列化对象的最佳方法

时间:2011-02-17 17:17:29

标签: c# xml database xml-serialization

我经常将我的对象以xml格式写入数据库。

但是,如果我改变对象的形式,比如通过更改名称或更改字段,我就无法再从数据库中读取它们,这使得阅读它们的任务变得有些困难,将它们转换为新的表单,并将它们写回数据库。

每次我改变一些关于它们的东西时,我宁愿不必重命名我的课程。

*注意:我依靠C#的XmlSerialization /反序列化对象来生成Xml。如果我改变对象的格式,也许这是不可取的。

2 个答案:

答案 0 :(得分:2)

如果在对象上实现ISerializable接口,则可以实现自定义序列化/反序列化例程,这些例程向后兼容旧版本的对象。

请点击此处查看如何完成此操作的示例:ISerializable and backward compatibility

答案 1 :(得分:1)

最终取决于您如何序列化对象。

一个方便的选择是将它们存储为散列(键值对)。这样,如果要对具有属性Dog的类name添加另一个属性breed,则现有对象将不会失效。他们只有breed = nil 在这种情况下,精确的存储格式(xml,json或单独的'属性'表)并不重要,重要的是如何将对象转换为它并返回。

但我不认为任何人都可以在不了解特定平台的情况下提出具体建议。