コード例 #1
0
        public async Task <ActionResult> UpgradeDatabase()
        {
            LegacyBackgroundMigrator.BeginMigration(new LegacyMigrator());

            await Task.FromResult(true);



            return(RedirectToAction("CheckUpgradeProgress"));
        }
コード例 #2
0
        public ActionResult CheckUpgradeProgress()
        {
            if (LegacyBackgroundMigrator.MigrationTask != null)
            {
                ViewBag.Refresh  = "True";
                ViewBag.Messages = LegacyBackgroundMigrator.MessageStack.ToString()
                                   .Replace(System.Environment.NewLine, "<br />");
                var upgradeSuccess = false;
                switch (LegacyBackgroundMigrator.MigrationTask.Status)
                {
                case TaskStatus.Running:
                case TaskStatus.WaitingForChildrenToComplete:
                case TaskStatus.WaitingToRun:
                case TaskStatus.WaitingForActivation:
                    ViewBag.Status = "Running";
                    ViewBag.Alert  = "alert-info";
                    break;

                case TaskStatus.Canceled:
                    ViewBag.Status  = "Canceled";
                    ViewBag.Alert   = "alert-error";
                    ViewBag.Refresh = "False";
                    LegacyBackgroundMigrator.Reset();
                    break;

                case TaskStatus.Faulted:
                    ViewBag.Status  = "Failed";
                    ViewBag.Alert   = "alert-error";
                    ViewBag.Refresh = "False";
                    LegacyBackgroundMigrator.Reset();
                    break;

                case TaskStatus.RanToCompletion:
                    ViewBag.Status  = "Completed";
                    ViewBag.Alert   = "alert-success";
                    ViewBag.Refresh = "False";
                    upgradeSuccess  = true;
                    LegacyBackgroundMigrator.Reset();
                    break;

                default:
                    ViewBag.Status = LegacyBackgroundMigrator.MigrationTask.Status.ToString();
                    ViewBag.Alert  = "alert-warning";
                    break;
                }

                if (upgradeSuccess)
                {
                    var filter = GlobalFilters.Filters.FirstOrDefault(f => f.Instance is DbSetupFilter);
                    if (filter != null)
                    {
                        GlobalFilters.Filters.Remove(filter.Instance);
                    }
                    Database.SetInitializer(new TdIdentityDbInitializer());
                    Database.SetInitializer(new TdPushNotificationDbInitializer());
                    Startup.ConfigurePushNotifications();
                    UpdateSearchIndex();
                }
            }
            return(View());
        }