Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新数据库的最佳方法&x27;更改对象形式后,将序列化对象_C#_Xml_Database_Xml Serialization - Fatal编程技术网

C# 更新数据库的最佳方法&x27;更改对象形式后,将序列化对象

C# 更新数据库的最佳方法&x27;更改对象形式后,将序列化对象,c#,xml,database,xml-serialization,C#,Xml,Database,Xml Serialization,我经常以xml形式将对象写入数据库 但是,如果我更改了对象的形式,比如更改名称或字段,我将无法再从数据库中读取它们,这使得读取它们、将它们转换为新形式并将它们写回数据库的任务有些困难 我不希望每次更改类的某些内容时都必须重命名它们 *注意:我依靠C#的Xml序列化/对象反序列化来生成Xml。如果我更改对象的格式,这可能是不可取的。这最终取决于如何序列化对象 一个方便的选择是将它们存储为散列(键值对)。这样,如果我添加另一个属性繁殖,则现有对象不会无效。他们只有breed=nil 确切的存储格式(

我经常以xml形式将对象写入数据库

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

我不希望每次更改类的某些内容时都必须重命名它们


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

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

一个方便的选择是将它们存储为散列(键值对)。这样,如果我添加另一个属性
繁殖
,则现有对象不会无效。他们只有
breed=nil

确切的存储格式(xml、json或单独的“属性”表)在这种情况下并不重要,重要的是如何将对象转换为xml、json或单独的“属性”表


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

如果在对象上实现ISerializable接口,那么就可以实现自定义序列化/反序列化例程,从而提供与旧版本对象的向后兼容性


请参见此处,以了解如何实现该功能的示例:

如果您正在进行大量工作,您可能需要查看文档数据库;比RDBMS更适合这种类型的使用是。。。