0

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

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

我知道您可以拥有多个名称相同但参数不同的方法。这适用于类和 VersionUID 或其他一些变量吗?

谢谢!

4

1 回答 1

0

不,它不会。类不支持像“属性重载”这样的概念,因此具有相同名称的类被视为同一个类,即使它具有不同的属性。

对您而言,“最佳”方式是结合 EntityFramework6 迁移到关系数据库(那里有一个 SQLite 适配器,因此您不需要 SQLServer)。借助 EF,您可以使用迁移功能来更改模型并自动迁移数据。如果操作正确,您可以更改模型并且不会发生数据丢失。

于 2015-03-15T20:32:09.040 回答