Banshee.Database.BansheeDbFormatMigrator.Migrate C# (CSharp) Method

Migrate() public method

public Migrate ( ) : void
return void
        public void Migrate ()
        {
            try {

                if (DatabaseVersion > CURRENT_VERSION) {
                    throw new DatabaseVersionTooHigh (CURRENT_VERSION, DatabaseVersion);
                } else if (DatabaseVersion < CURRENT_VERSION) {
                    Execute ("BEGIN");
                    InnerMigrate ();
                    Execute ("COMMIT");
                } else {
                    Log.DebugFormat ("Database version {0} is up to date", DatabaseVersion);
                }

                // Trigger metadata refreshes if necessary
                int metadata_version = connection.Query<int> ("SELECT Value FROM CoreConfiguration WHERE Key = 'MetadataVersion'");
                if (DatabaseVersion == CURRENT_VERSION && metadata_version < CURRENT_METADATA_VERSION) {
                    ServiceManager.ServiceStarted += OnServiceStarted;
                }
            } catch (DatabaseVersionTooHigh) {
                throw;
            } catch (Exception) {
                Log.Warning ("Rolling back database migration");
                Execute ("ROLLBACK");
                throw;
            }

            OnFinished ();
        }

Usage Example

        void IInitializeService.Initialize()
        {
            lock (this) {
                migrator.Migrate();
                migrator = null;

                try {
                    OptimizeDatabase();
                } catch (Exception e) {
                    Log.Error("Error determining if ANALYZE is necessary", e);
                }

                // Update cached sorting keys
                BeginTransaction();
                try {
                    SortKeyUpdater.Update();
                    CommitTransaction();
                } catch {
                    RollbackTransaction();
                }
            }

            if (Banshee.Metrics.BansheeMetrics.EnableCollection.Get())
            {
                Banshee.Metrics.BansheeMetrics.Start();
            }

            if (validate_schema)
            {
                ValidateSchema();
            }
        }
All Usage Examples Of Banshee.Database.BansheeDbFormatMigrator::Migrate