void SetVersionHandler1(SetVersionRequest request) { SetVersionDeferral deferral = request.GetDeferral(); uint version = appData.Version; switch (version) { case 0: // Need to convert data from v0 to v1. // This sample simulates that conversion by writing a version-specific value. appData.LocalSettings.Values[settingName] = settingValue1; break; case 1: // Version is already 1. Nothing to do. break; default: throw new Exception("Unexpected ApplicationData Version: " + version); } deferral.Complete(); }
/// <summary> /// Update the application data format. Afterwards, the version will be incremented. /// </summary> /// <param name="request">Different upgrade paths are enabled by checking the current /// and desired properties of this parameter.</param> private void UpdateAppDataFormat(SetVersionRequest request) { // Create a dictionary with the required settings and their default values. Dictionary <string, object> requiredSettings = new Dictionary <string, object> { { "MediaVolume", 100 }, { "ShowDefaultSubtitles", true }, { "EnableDiagnostics", true } }; // Verify disk settings against default settings. foreach (string key in requiredSettings.Keys) { if (!UserSettings.Values.ContainsKey(key)) { // Required setting not found on disk, so add it. UserSettings.Values[key] = requiredSettings.GetValueOrDefault(key); } } // Check disk settings for unneeded entries. foreach (string diskEntry in UserSettings.Values.Keys) { if (!requiredSettings.ContainsKey(diskEntry)) { // Disk settings contain more info than needed. UserSettings.Values.Remove(diskEntry); } } }
private void SetSettingsVersion(SetVersionRequest setVersionRequest) { if (setVersionRequest.CurrentVersion < setVersionRequest.DesiredVersion) { // In the future, we'll have code here that migrates old app data versions to new app data versions. } }
private static void SetVersion1Handler(SetVersionRequest setVersionRequest) { SetVersionDeferral deferral = setVersionRequest.GetDeferral(); //Change the data format for all needed settings ApplicationData.Current.LocalSettings.Values["LocalData"] = "this-is-a-new-data-format"; deferral.Complete(); }
private static void UpdateDataVersion(SetVersionRequest vr) { var deferral = vr.GetDeferral(); Debug.WriteLine("Updating data from " + vr.CurrentVersion + " to " + vr.DesiredVersion); if (vr.CurrentVersion < 1 && vr.DesiredVersion >= 1) { Debug.WriteLine("Upgrading data to v1"); PerformAction("CREATE TABLE Runs (`Start` TEXT NOT NULL, `End` TEXT, `Seconds` INTEGER)"); } deferral.Complete(); }
// 根据当前版本号和将要设置成的版本号,将“设置”数据升级到最新版本 private async void SetVersionHandler(SetVersionRequest request) { // 异步操作 SetVersionDeferral deferral = request.GetDeferral(); await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { lblMsg.Text = "CurrentVersion: " + request.CurrentVersion; // 当前版本号 lblMsg.Text += Environment.NewLine; lblMsg.Text += "DesiredVersion: " + request.DesiredVersion; // 将要设置成的版本号 lblMsg.Text += Environment.NewLine; lblMsg.Text += "ApplicationData.Current.Version: " + ApplicationData.Current.Version; // 当前版本号 }); // 完成异步操作 deferral.Complete(); }
private static async void SetVersionHandler(SetVersionRequest setVersionRequest) { SetVersionDeferral deferral = setVersionRequest.GetDeferral(); if (setVersionRequest.CurrentVersion == setVersionRequest.DesiredVersion) { } else if (setVersionRequest.CurrentVersion == 0) { } else if (setVersionRequest.CurrentVersion == 1) // remove left-over Dictionary entries with missing tables { await DatabaseManager.Instance.InitializeDb(); List <(int Id, string OriginLanguageCode, string DestinationLanguageCode)> dictionaries = await DatabaseManager.Instance.ExecuteReader("SELECT * FROM Dictionaries", dataReader => { int id = dataReader.GetInt32(0); string originLanguageCode = dataReader.GetString(1); string destinationLanguageCode = dataReader.GetString(2); DateTimeOffset creationDate = new DateTimeOffset(dataReader.GetInt64(3), TimeSpan.Zero); int numberOfEntries = dataReader.GetInt32(4); return(id, originLanguageCode, destinationLanguageCode); }); foreach (var dictionary in dictionaries) { string tableName = string.Format("Dictionary{0}{1}", dictionary.OriginLanguageCode, dictionary.DestinationLanguageCode); object result = await DatabaseManager.Instance.ExecuteScalar($"SELECT name FROM sqlite_master WHERE type='table' AND name='{tableName}'"); if (result == null) { await DatabaseManager.Instance.ExecuteNonQuery($"DELETE FROM Dictionaries WHERE ID = {dictionary.Id}"); } } } else { await ApplicationData.Current.ClearAsync(); } deferral.Complete(); }
internal void VersionRequestHandler(SetVersionRequest request) { var defer = request.GetDeferral(); foreach (var item in ApplicationData.Current.LocalSettings.Values) { switch (item.Key) { case "Name": ApplicationData.Current.LocalSettings.Values["Name"] = string.Format("V{0}_{1}", request.DesiredVersion, item.Value); break; default: ApplicationData.Current.LocalSettings.Values[item.Key] = string.Format("{0}", item.Value); break; } } ApplicationData.Current.SignalDataChanged(); defer.Complete(); }
private async void SetVersionHandlerAsync(SetVersionRequest request) { SetVersionDeferral deferral = request.GetDeferral(); AppData.CurrentVersion = request.CurrentVersion; if (request.DesiredVersion == 1) { AppData.ClearServicesAsync(); } else if (request.CurrentVersion <= 1 && request.DesiredVersion > 1) { await AppData.CreateSampleServicesAsync(); } else if (request.CurrentVersion == 2 && request.DesiredVersion > 2) { await AppData.UpdateSampleServicesAsync(); } deferral.Complete(); }
/// <summary> /// Handles the request to set the version of the application data in the application data store. /// </summary> /// <param name="request">The set version request.</param> /// <remarks> /// Application data migration should be done here. /// </remarks> void SetVersionHandler(SetVersionRequest request) { SetVersionDeferral deferral = request.GetDeferral(); // Downgrades are not supported... if (request.DesiredVersion < request.CurrentVersion) { ApplicationData.Current.ClearAsync().AsTask().Wait(); } //if (request.CurrentVersion < 1 && request.DesiredVersion >= 1) //{ //} //if (request.CurrentVersion < 2) //{ //} //if (request.CurrentVersion < 3) //{ //} deferral.Complete(); }
private void MigrationHandler(SetVersionRequest setVersionRequest) { // Tralala, just set the version pls thx <3 }