Пример #1
0
        private void UpdateInternal(string targetMigration)
        {
            IEnumerable <MigrationOperation> upgradeOperations = this._historyRepository.GetUpgradeOperations();

            if (upgradeOperations.Any <MigrationOperation>())
            {
                base.UpgradeHistory(upgradeOperations);
            }
            IEnumerable <string> strings = this.GetPendingMigrations();

            if (!strings.Any <string>())
            {
                this.CheckLegacyCompatibility((Action)(() => this.ExecuteOperations(MigrationAssembly.CreateBootstrapMigrationId(), new VersionedModel(this._currentModel, (string)null), Enumerable.Empty <MigrationOperation>(), (IEnumerable <MigrationOperation>) this._modelDiffer.Diff(this._emptyModel.Value, this.GetHistoryModel(this._defaultSchema), this._modificationCommandTreeGenerator, this.SqlGenerator, (string)null, (string)null), false, false)));
            }
            string targetMigrationId = targetMigration;

            if (!string.IsNullOrWhiteSpace(targetMigrationId))
            {
                if (!targetMigrationId.IsValidMigrationId())
                {
                    if (targetMigrationId == Strings.AutomaticMigration)
                    {
                        throw Error.AutoNotValidTarget((object)Strings.AutomaticMigration);
                    }
                    targetMigrationId = this.GetMigrationId(targetMigration);
                }
                if (strings.Any <string>((Func <string, bool>)(m => m.EqualsIgnoreCase(targetMigrationId))))
                {
                    strings = strings.Where <string>((Func <string, bool>)(m => string.CompareOrdinal(m.ToLowerInvariant(), targetMigrationId.ToLowerInvariant()) <= 0));
                }
                else
                {
                    strings = this._historyRepository.GetMigrationsSince(targetMigrationId);
                    if (strings.Any <string>())
                    {
                        base.Downgrade(strings.Concat <string>((IEnumerable <string>) new string[1]
                        {
                            targetMigrationId
                        }));
                        return;
                    }
                }
            }
            base.Upgrade(strings, targetMigrationId, (string)null);
        }
Пример #2
0
        public override void Update(string targetMigration)
        {
            DetectInvalidHistoryChange();

            base.EnsureDatabaseExists();

            var upgradeOperations = _historyRepository.GetUpgradeOperations();

            if (upgradeOperations.Any())
            {
                base.UpgradeHistory(upgradeOperations);
            }

            var pendingMigrations = GetPendingMigrations();

            if (!pendingMigrations.Any())
            {
                CheckLegacyCompatibility(
                    () => ExecuteOperations(
                        MigrationAssembly.CreateBootstrapMigrationId(),
                        _currentModel,
                        _modelDiffer.Diff(_emptyModel.Value, _currentModel, true).Where(o => o.IsSystem),
                        false));
            }

            var targetMigrationId = targetMigration;

            if (!string.IsNullOrWhiteSpace(targetMigrationId))
            {
                if (!targetMigrationId.IsValidMigrationId())
                {
                    if (targetMigrationId == Strings.AutomaticMigration)
                    {
                        throw Error.AutoNotValidTarget(Strings.AutomaticMigration);
                    }

                    targetMigrationId = GetMigrationId(targetMigration);
                }

                if (pendingMigrations.Any(m => m.EqualsIgnoreCase(targetMigrationId)))
                {
                    pendingMigrations
                        = pendingMigrations
                          .Where(
                              m =>
                              string.CompareOrdinal(m.ToLowerInvariant(), targetMigrationId.ToLowerInvariant()) <= 0);
                }
                else
                {
                    pendingMigrations
                        = _historyRepository.GetMigrationsSince(targetMigrationId);

                    if (pendingMigrations.Any())
                    {
                        base.Downgrade(pendingMigrations.Concat(new[] { targetMigrationId }));

                        return;
                    }
                }
            }

            base.Upgrade(pendingMigrations, targetMigrationId, null);
        }
Пример #3
0
        private void UpdateInternal(string targetMigration)
        {
            var upgradeOperations = _historyRepository.GetUpgradeOperations();

            if (upgradeOperations.Any())
            {
                base.UpgradeHistory(upgradeOperations);
            }

            var pendingMigrations = GetPendingMigrations();

            if (!pendingMigrations.Any())
            {
                CheckLegacyCompatibility(
                    () => ExecuteOperations(
                        MigrationAssembly.CreateBootstrapMigrationId(),
                        _currentModel,
                        Enumerable.Empty <MigrationOperation>(),
                        _modelDiffer.Diff(
                            _emptyModel.Value,
                            GetHistoryModel(_defaultSchema),
                            _modificationCommandTreeGenerator,
                            SqlGenerator),
                        downgrading: false));
            }

            var targetMigrationId = targetMigration;

            if (!string.IsNullOrWhiteSpace(targetMigrationId))
            {
                if (!targetMigrationId.IsValidMigrationId())
                {
                    if (targetMigrationId == Strings.AutomaticMigration)
                    {
                        throw Error.AutoNotValidTarget(Strings.AutomaticMigration);
                    }

                    targetMigrationId = GetMigrationId(targetMigration);
                }

                if (pendingMigrations.Any(m => m.EqualsIgnoreCase(targetMigrationId)))
                {
                    pendingMigrations
                        = pendingMigrations
                          .Where(
                              m =>
                              string.CompareOrdinal(m.ToLowerInvariant(), targetMigrationId.ToLowerInvariant()) <= 0);
                }
                else
                {
                    pendingMigrations
                        = _historyRepository.GetMigrationsSince(targetMigrationId);

                    if (pendingMigrations.Any())
                    {
                        base.Downgrade(pendingMigrations.Concat(new[] { targetMigrationId }));

                        return;
                    }
                }
            }

            base.Upgrade(pendingMigrations, targetMigrationId, null);
        }