我有一个带有SQlite DB的Metro应用程序,它预先填充了一些数据。 允许用户更改并添加更多数据。
问题是:如何在应用更新之间保留用户数据? 我应该选择哪个文件夹:
Windows.ApplicationModel.Package.Current.installedLocation
或
Windows.Storage.ApplicationData.Current.LocalFolder
?
答案 0 :(得分:1)
您可能希望同时使用这两个位置。
InstalledLocation包含应用随附的所有数据。它是只读的,因此用户无法在该位置更改或添加数据。
ApplicationData文件夹是按用户和可写的。他们将坚持更新。
典型的模式是将预先填充的数据库发送到您的应用包中,以便将其安装在installedLocation文件夹中。当应用程序首次运行时,它可以将数据库从installedLocation复制到ApplicationData文件夹,然后应用程序可以使用该数据。
只要应用程序不复制ApplicationData文件夹中已有的任何数据,用户的数据就会在更新之间保留。如果用户只是添加数据并且没有更改预先填充的数据,或者如果预先填充的数据没有随更新而变化,那么这很容易。您只需复制任何新数据,但不能覆盖现有数据。
如果用户可以更改预先填充的数据,并且更新可以更改预先填充的数据,那么这会变得有点棘手:您需要一个系统来了解当前数据是否来自用户,然后更新只有它不是来自用户。最好的方法取决于数据库和数据。两种可能性是修改的列或时间戳。