在不久的将来,我将为我的WP7应用添加一些功能。如here所示,我将对数据库进行一些更改。你在哪里以及如何在代码中处理这样的更新?我不认为有一种方法可以在“更新”上运行代码。它已经硬连线到应用程序代码中。
我正在考虑在IsolatedStorage中设置一个标志。将其命名为v1.2UpgradeFlag,并将其设置为false。在App.xaml.cs中,检查该标志,如果为false,则意味着升级尚未运行,运行一些代码并更新标志。
让代码像那样坐在那里的想法,可能不适用于多个版本之前那种笨重。
编辑:我也很好奇如何管理应用程序的累积更新。所以在v1.2中,我有一些代码可以更新数据库模式。如果有人在v1.3上购买应用程序怎么办?我不希望他们'获得'v1.1,让应用程序运行1.2升级代码,到达v1.3。
答案 0 :(得分:2)
由于这是您第一次必须运行数据库升级,因此我很想在架构中添加一个额外的表来保存版本信息。如果,当您尝试检索数据时,它会发出NotFound错误,您知道需要运行升级。这样,您可以在后续版本中管理该过程,而无需管理额外文件。
为了进行累积更新,您可以使用相同的机制。您可以维护一个方法,将数据库从v1更新到v1.2,另一种方法从1.2升级到1.3,等等。维护升级过程的方法可能看起来像这个伪代码......
var currentDbVersion = GetDbVersion();
while(currentDbVersion < currentCodeVersion)
{
switch(currentDbVersion)
{
case 1.2:
RunUpgradeFrom12to13();
break;
case 1.3:
RunUpgradeFrom12to13();
break;
default:
break;
}
currentDbVersion = GetDbVersion();
}
这应该允许您从任何以前的版本升级到当前版本而不维护多个代码路径(因为1.0到1.2的升级永远不会改变,并且每个累积步骤应该有一个已知的起始位置)
那里可能有更明智的想法,但这是我想到的第一件事。