版本控制和序列化

Versioning and Serialization

所以这是关于序列化和版本控制的问题。我有一个程序是一个音乐数据库,它存储 sheet 带有名称、作曲家... 我将每首歌曲序列化到一个隐藏文件夹中,以便用户可以在下次启动时重新加载数据库。

现在,当我必须更改歌曲中的某些内容时 class 如果是兼容的更改,一切都很好。我的想法是,如果我要进行不兼容的更改,我是否能够创建第二个具有相同名称 'Song' 但 VersionUID 不同的 class。然后当它读取歌曲时,如果保存的版本与最新版本不匹配,它将转到一种方法将歌曲读取到旧的 UID 中,然后通过一系列步骤将其转换为新版本。这有可能吗?

我知道您可以有多个名称相同但参数不同的方法。这可以与 classes 和 VersionUID 或其他变量一起使用吗?

谢谢!

不,不会。 类 不支持像 "property overload" 这样的概念,因此具有相同名称的 class 被认为是相同的 class,即使它具有不同的属性。

您的 "best" 方法是结合 EntityFramework6 迁移到关系数据库(那里有一个 SQLite 适配器,因此您不需要 SQLServer)。 借助 EF,您可以使用迁移,这使您能够更改模型并自动迁移数据。如果操作正确,您可以更改模型并且不会发生数据丢失。