我经常将我的对象以xml格式写入数据库。
但是,如果我改变对象的形式,比如通过更改名称或更改字段,我就无法再从数据库中读取它们,这使得阅读它们的任务变得有些困难,将它们转换为新的表单,并将它们写回数据库。
每次我改变一些关于它们的东西时,我宁愿不必重命名我的课程。
*注意:我依靠C#的XmlSerialization /反序列化对象来生成Xml。如果我改变对象的格式,也许这是不可取的。
答案 0 :(得分:2)
如果在对象上实现ISerializable接口,则可以实现自定义序列化/反序列化例程,这些例程向后兼容旧版本的对象。
请点击此处查看如何完成此操作的示例:ISerializable and backward compatibility
答案 1 :(得分:1)
最终取决于您如何序列化对象。
一个方便的选择是将它们存储为散列(键值对)。这样,如果要对具有属性Dog
的类name
添加另一个属性breed
,则现有对象将不会失效。他们只有breed = nil
在这种情况下,精确的存储格式(xml,json或单独的'属性'表)并不重要,重要的是如何将对象转换为它并返回。
但我不认为任何人都可以在不了解特定平台的情况下提出具体建议。