Пример #1
0
        internal override void RevertMigration(
            string migrationId,
            DbMigration migration,
            XDocument targetModel)
        {
            IEnumerable <MigrationOperation> systemOperations = Enumerable.Empty <MigrationOperation>();
            string    defaultSchema = DbMigrator.GetDefaultSchema(migration);
            XDocument historyModel1 = this.GetHistoryModel(defaultSchema);

            if (object.ReferenceEquals((object)targetModel, (object)this._emptyModel.Value) && !this._historyRepository.IsShared())
            {
                systemOperations = (IEnumerable <MigrationOperation>) this._modelDiffer.Diff(historyModel1, this._emptyModel.Value, (Lazy <ModificationCommandTreeGenerator>)null, (MigrationSqlGenerator)null, (string)null, (string)null);
            }
            else
            {
                string lastDefaultSchema = this.GetLastDefaultSchema(migrationId);
                if (!string.Equals(lastDefaultSchema, defaultSchema, StringComparison.Ordinal))
                {
                    XDocument historyModel2 = this.GetHistoryModel(lastDefaultSchema);
                    systemOperations = (IEnumerable <MigrationOperation>) this._modelDiffer.Diff(historyModel1, historyModel2, (Lazy <ModificationCommandTreeGenerator>)null, (MigrationSqlGenerator)null, (string)null, (string)null);
                }
            }
            migration.Down();
            this.ExecuteOperations(migrationId, new VersionedModel(targetModel, (string)null), migration.Operations, systemOperations, true, false);
        }
Пример #2
0
        internal override void ApplyMigration(DbMigration migration, DbMigration lastMigration)
        {
            IMigrationMetadata migrationMetadata = (IMigrationMetadata)migration;
            VersionedModel     sourceModel1      = this.GetLastModel(lastMigration, migrationMetadata.Id);
            VersionedModel     sourceModel2      = migration.GetSourceModel();
            VersionedModel     targetModel       = migration.GetTargetModel();

            if (sourceModel2 != null && this.IsModelOutOfDate(sourceModel2.Model, lastMigration))
            {
                base.AutoMigrate(migrationMetadata.Id.ToAutomaticMigrationId(), sourceModel1, sourceModel2, false);
                sourceModel1 = sourceModel2;
            }
            string    defaultSchema = DbMigrator.GetDefaultSchema(migration);
            XDocument historyModel  = this.GetHistoryModel(defaultSchema);
            IEnumerable <MigrationOperation> systemOperations = Enumerable.Empty <MigrationOperation>();

            if (object.ReferenceEquals((object)sourceModel1.Model, (object)this._emptyModel.Value) && !base.HistoryExists())
            {
                systemOperations = (IEnumerable <MigrationOperation>) this._modelDiffer.Diff(this._emptyModel.Value, historyModel, (Lazy <ModificationCommandTreeGenerator>)null, (MigrationSqlGenerator)null, (string)null, (string)null);
            }
            else
            {
                string lastDefaultSchema = this.GetLastDefaultSchema(migrationMetadata.Id);
                if (!string.Equals(lastDefaultSchema, defaultSchema, StringComparison.Ordinal))
                {
                    systemOperations = (IEnumerable <MigrationOperation>) this._modelDiffer.Diff(this.GetHistoryModel(lastDefaultSchema), historyModel, (Lazy <ModificationCommandTreeGenerator>)null, (MigrationSqlGenerator)null, (string)null, (string)null);
                }
            }
            migration.Up();
            this.ExecuteOperations(migrationMetadata.Id, targetModel, migration.Operations, systemOperations, false, false);
        }
Пример #3
0
 private IEnumerable <string> GetHistorySchemas()
 {
     return(this._migrationAssembly.MigrationIds.Select(migrationId => new
     {
         migrationId = migrationId,
         migration = this._migrationAssembly.GetMigration(migrationId)
     }).Select(_param0 => DbMigrator.GetDefaultSchema(_param0.migration)));
 }
Пример #4
0
        private string GetLastDefaultSchema(string migrationId)
        {
            string migrationId1 = this._migrationAssembly.MigrationIds.LastOrDefault <string>((Func <string, bool>)(m => string.CompareOrdinal(m, migrationId) < 0));

            if (migrationId1 != null)
            {
                return(DbMigrator.GetDefaultSchema(this._migrationAssembly.GetMigration(migrationId1)));
            }
            return("dbo");
        }