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); }
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); }
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); }