コード例 #1
0
ファイル: BaseMigrate.cs プロジェクト: X0nic/Migrator.NET
 protected BaseMigrate(IList<long> availableMigrations, ITransformationProvider provider, ILogger logger)
 {
     _provider = provider;
     _availableMigrations = availableMigrations;
     _original = new List<long> (_provider.AppliedMigrations.ToArray()); //clone
     _logger = logger;
 }
コード例 #2
0
ファイル: DatabaseX.cs プロジェクト: ArunGeorgean/Classic
 public static void RenameColumnWithSchema(this ITransformationProvider database, string oldtable, string oldcolumn, string newcolumn)
 {
     if (TableExistsWithSchema(database, oldtable))
     {
         database.ExecuteNonQuery(string.Format("sp_rename '{0}.{1}', '{2}', 'COLUMN'", oldtable, oldcolumn, newcolumn));
     }
 }
コード例 #3
0
 protected BaseMigrate(List <long> availableMigrations, ITransformationProvider provider, ILogger logger)
 {
     _provider            = provider;
     _availableMigrations = availableMigrations;
     _original            = new List <long>(_provider.AppliedMigrations.ToArray()); //clone
     _logger = logger;
 }
コード例 #4
0
ファイル: TableAction.cs プロジェクト: juanplopes/pilgrim
 public virtual void Execute(ITransformationProvider provider)
 {
     foreach (var action in this.Actions)
     {
         action.Execute(provider);
     }
 }
コード例 #5
0
 public static void AddIndex(
     this ITransformationProvider transformation,
     string tableName,
     params string[] columns)
 {
     transformation.AddIndex(tableName, false, columns);
 }
        public static ITransformationProvider AddManyToManyJoiningTable(this ITransformationProvider database, string schema, string lhsTableName, string lhsKey, string rhsTableName, string rhsKey, string joiningTableName)
        {
            string joiningTableWithSchema = TransformationProviderUtility.FormatTableName(schema, joiningTableName);

            string joinLhsKey = Inflector.Singularize(lhsTableName) + "Id";
            string joinRhsKey = Inflector.Singularize(rhsTableName) + "Id";

            database.AddTable(joiningTableWithSchema,
                              new Column(joinLhsKey, DbType.Guid, ColumnProperty.NotNull),
                              new Column(joinRhsKey, DbType.Guid, ColumnProperty.NotNull));

            string pkName = "PK_" + joiningTableName;

            pkName = ShortenKeyNameToBeSuitableForOracle(pkName);

            database.AddPrimaryKey(pkName, joiningTableWithSchema, joinLhsKey, joinRhsKey);

            string lhsTableNameWithSchema = TransformationProviderUtility.FormatTableName(schema, lhsTableName);
            string rhsTableNameWithSchema = TransformationProviderUtility.FormatTableName(schema, rhsTableName);

            string lhsFkName = TransformationProviderUtility.CreateForeignKeyName(lhsTableName, joiningTableName);

            database.AddForeignKey(lhsFkName, joiningTableWithSchema, joinLhsKey, lhsTableNameWithSchema, lhsKey, ForeignKeyConstraintType.NoAction);

            string rhsFkName = TransformationProviderUtility.CreateForeignKeyName(rhsTableName, joiningTableName);

            database.AddForeignKey(rhsFkName, joiningTableWithSchema, joinRhsKey, rhsTableNameWithSchema, rhsKey, ForeignKeyConstraintType.NoAction);

            return(database);
        }
コード例 #7
0
ファイル: DatabaseX.cs プロジェクト: ArunGeorgean/Classic
 public static void ChangeColumnSizeWithSchema(this ITransformationProvider database, string table, ColumnInfo column)
 {
     if (ColumnExistsWithSchema(database, table, column.Name))
     {
         database.ExecuteNonQuery(string.Format("ALTER TABLE {0} ALTER COLUMN {1} {2}({3})", table, column.Name, column.Type, column.Size));
     }
 }
コード例 #8
0
        /// <summary>
        /// New table expression.
        /// </summary>
        /// <example>
        ///     Database.ChangeTable("Roles", t => {
        ///         t.ChangeColumn("Description").Text;     // Changes description field data type.
        ///         t.RemoveColumn("Name");                 // Removes name field.
        ///         t.Integer("Priority");                  // Adds priority integer field.
        ///     });
        /// </example>
        /// <param name="transformationProvider">The transformation provider.</param>
        /// <param name="tableName">Name of the table.</param>
        /// <param name="tableDefinition">The table change expressions.</param>
        public static void ChangeTable(this ITransformationProvider transformationProvider, String tableName, Action <ChangeTable> tableDefinition)
        {
            var table = new ChangeTable(tableName);

            tableDefinition(table);
            table.Migrate(transformationProvider);
        }
コード例 #9
0
ファイル: DatabaseX.cs プロジェクト: ArunGeorgean/Classic
 public static void RemoveTableWithSchema(this ITransformationProvider database, string table)
 {
     if (TableExistsWithSchema(database, table))
     {
         database.ExecuteNonQuery(string.Format("DROP TABLE {0}", table));
     }
 }
コード例 #10
0
 public TransformationPresenter(
     ITransformationProvider provider,
     IAsyncOperationLocker locker)
 {
     _provider = provider;
     _locker   = locker;
 }
コード例 #11
0
        public static int GetLastInsertedId(this ITransformationProvider migration)
        {
            var query  = "SELECT @@IDENTITY";
            var result = migration.ExecuteScalar(query);

            return(int.Parse(result.ToString()));
        }
コード例 #12
0
 protected BaseMigrate(List<long> availableMigrations, ITransformationProvider provider, ILogger logger)
 {
     this.provider = provider;
     this.availableMigrations = availableMigrations;
     this.original = new List<long>(this.provider.AppliedMigrations.ToArray()); // clone
     this.logger = logger;
 }
コード例 #13
0
 public void CreateAndDropHiLoTable(ITransformationProvider database)
 {
     database.CreateHiLoTable();
     Assert.IsTrue(database.TableExists(TransformationProviderHiLoExtensions.HI_LO_TABLE_NAME));
     database.RemoveHiLoTable();
     Assert.IsFalse(database.TableExists(TransformationProviderHiLoExtensions.HI_LO_TABLE_NAME));
 }
コード例 #14
0
ファイル: DatabaseX.cs プロジェクト: ArunGeorgean/Classic
 public static void RenameTableWithSchema(this ITransformationProvider database, string oldtable, string newtable)
 {
     if (TableExistsWithSchema(database, oldtable))
     {
         database.ExecuteNonQuery(string.Format("sp_rename '{0}', '{1}'", oldtable, newtable));
     }
 }
コード例 #15
0
		public Migrator(ITransformationProvider provider, Assembly migrationAssembly, bool trace, ILogger logger) {
			_provider = provider;
			Logger = logger;

			_migrationLoader = new MigrationLoader(provider, migrationAssembly, trace);
			_migrationLoader.CheckForDuplicatedVersion();
		}
コード例 #16
0
ファイル: Migrator.cs プロジェクト: svn2github/ecm7migrator
        /// <summary>
        /// Инициализация
        /// </summary>
        public Migrator(ITransformationProvider provider, Assembly asm)
        {
            Require.IsNotNull(provider, "Не задан провайдер трансформации");
            this.provider = provider;

            Require.IsNotNull(asm, "Не задана сборка с миграциями");
            migrationAssembly = new MigrationAssembly(asm);
        }
コード例 #17
0
        /// <summary>
        /// Инициализация
        /// </summary>
        public Migrator(ITransformationProvider provider, Assembly asm)
        {
            Require.IsNotNull(provider, "Не задан провайдер трансформации");
            this.provider = provider;

            Require.IsNotNull(asm, "Не задана сборка с миграциями");
            migrationAssembly = new MigrationAssembly(asm);
        }
コード例 #18
0
ファイル: BaseMigrate.cs プロジェクト: juanplopes/simple
 protected BaseMigrate(List<long> availableMigrations, ITransformationProvider provider, ILogger logger, string schemainfoname)
 {
     _provider = provider;
     _provider.SchemaInfoName(schemainfoname);
     _availableMigrations = availableMigrations;
     _original = new List<long> (_provider.AppliedMigrations.ToArray()); //clone
     _logger = logger;
 }
コード例 #19
0
        public void CanLoad_SQLiteProvider()
        {
            ITransformationProvider provider = ProviderFactory.Create(ProviderTypes.SQLite,
                                                                      ConfigurationManager.AppSettings[
                                                                          "SQLiteConnectionString"], null);

            Assert.IsNotNull(provider);
        }
コード例 #20
0
 public static void AddForeignKey(this ITransformationProvider migration, string foreignTable, string foreignColumn, string primaryTable, string primaryColumn)
 {
     migration.AddForeignKey(migration.ForeignKeyName(foreignTable, foreignColumn, primaryTable, primaryColumn),
                             foreignTable,
                             foreignColumn,
                             primaryTable,
                             primaryColumn);
 }
コード例 #21
0
		public MigrateAnywhere(List<long> availableMigrations, ITransformationProvider provider, ILogger logger)
			: base(availableMigrations, provider, logger) {
			_current = 0;
			if (provider.AppliedMigrations.Count > 0) {
				_current = provider.AppliedMigrations[provider.AppliedMigrations.Count - 1];
			}
			_goForward = false;
		}
コード例 #22
0
        public void CanLoad_OracleProvider()
        {
            ITransformationProvider provider = ProviderFactory.Create("Oracle",
                                                                      ConfigurationManager.AppSettings[
                                                                          "OracleConnectionString"]);

            Assert.IsNotNull(provider);
        }
コード例 #23
0
 public static void AddForeignKey(this ITransformationProvider migration, string foreignTable, string primaryTable)
 {
     migration.AddForeignKey(migration.ForeignKeyName(foreignTable, primaryTable),
                             foreignTable,
                             primaryTable + "Id",
                             primaryTable,
                             "Id");
 }
コード例 #24
0
        public void CanLoad_PostgreSQLProvider()
        {
            ITransformationProvider provider = ProviderFactory.Create("PostgreSQL",
                                                                      ConfigurationManager.AppSettings[
                                                                          "NpgsqlConnectionString"], null);

            Assert.IsNotNull(provider);
        }
コード例 #25
0
ファイル: Migrator.cs プロジェクト: JPLease/Migrator.NET
        public Migrator(ITransformationProvider provider, ILogger logger, MigrationLoader migrationLoader)
        {
            _provider = provider;
            Logger    = logger;

            _migrationLoader = migrationLoader;
            _migrationLoader.CheckForDuplicatedVersion();
        }
コード例 #26
0
        public void CanLoad_SqlServerProvider()
        {
            ITransformationProvider provider = ProviderFactory.Create("SqlServer",
                                                                      ConfigurationManager.AppSettings[
                                                                          "SqlServerConnectionString"], null);

            Assert.IsNotNull(provider);
        }
コード例 #27
0
ファイル: Migrator.cs プロジェクト: JPLease/Migrator.NET
        public Migrator(ITransformationProvider provider, bool trace, ILogger logger, params Type[] migrationTypes)
        {
            _provider = provider;
            Logger    = logger;

            _migrationLoader = new MigrationLoader(provider, trace, migrationTypes);
            _migrationLoader.CheckForDuplicatedVersion();
        }
コード例 #28
0
ファイル: TableAddAction.cs プロジェクト: juanplopes/simple
        public override void Execute(ITransformationProvider provider)
        {
            var columnsAccessors = Actions.OfType<ColumnAddAction>();
            Actions = Actions.Except(columnsAccessors.OfType<IAction>()).ToList();

            provider.AddTable(this.Name, columnsAccessors.Select(x => x.ToColumn()).ToArray());
            base.Execute(provider);
        }
コード例 #29
0
ファイル: Migrator.cs プロジェクト: svn2github/ecm7migrator
        public Migrator(ITransformationProvider provider, bool trace, ILogger logger, params Assembly[] assemblies)
        {
            this.provider = provider;
            Logger = logger;

            migrationLoader = new MigrationLoader(provider, trace, assemblies);
            migrationLoader.CheckForDuplicatedVersion();
        }
コード例 #30
0
 /// <summary>
 /// Removes foreign key and foreign key column if specified.
 /// </summary>
 /// <param name="database">The database.</param>
 public override void Migrate(ITransformationProvider database)
 {
     database.RemoveConstraint(ForeignKeyTable, Name);
     
     if (GenerateColumn)
     {
         database.RemoveColumn(ForeignKeyTable, GetColumn().Name);
     }
 }
コード例 #31
0
 public static void RemoveTableIfExists(
     this ITransformationProvider transformation,
     string table)
 {
     if (transformation.TableExists(table))
     {
         transformation.RemoveTable(table);
     }
 }
コード例 #32
0
        /// <summary>
        /// Removes foreign key and foreign key column if specified.
        /// </summary>
        /// <param name="database">The database.</param>
        public override void Migrate(ITransformationProvider database)
        {
            database.RemoveConstraint(ForeignKeyTable, Name);

            if (GenerateColumn)
            {
                database.RemoveColumn(ForeignKeyTable, GetColumn().Name);
            }
        }
コード例 #33
0
        public void InstanceForProvider()
        {
            ITransformationProvider localProv = _provider["sqlserver"];

            Assert.IsTrue(localProv is SqlServerTransformationProvider);

            ITransformationProvider localProv2 = _provider["foo"];

            Assert.IsTrue(localProv2 is NoOpTransformationProvider);
        }
コード例 #34
0
        /// <summary>
        /// Создать миграцию по номеру версии
        /// </summary>
        /// <param name="migrationInfo">Информация о миграции</param>
        /// <param name="provider">Провайдер СУБД для установки в качестве текущего провайдера миграции</param>
        public IMigration InstantiateMigration(MigrationInfo migrationInfo, ITransformationProvider provider)
        {
            Require.IsNotNull(provider, "Не задан провайдер СУБД");
            Require.IsNotNull(migrationInfo.Type, "Не задан класс миграции");

            var migration = (IMigration)Activator.CreateInstance(migrationInfo.Type);

            migration.Database = provider;
            return(migration);
        }
コード例 #35
0
        /// <summary>
        /// Adds foreign key and foreign key column if specified.
        /// </summary>
        /// <param name="database">The database.</param>
        public override void Migrate(ITransformationProvider database)
        {
            if (GenerateColumn)
            {
                database.AddColumn(ForeignKeyTable, GetColumn());
            }

            database.AddForeignKey(Name, ForeignKeyTable,
                                   new[] {ForeignKeyColumn}, PrimaryKeyTable, new[] {PrimaryKeyColumn}, DeleteConstraint, UpdateConstraint);
        }
コード例 #36
0
        /// <summary>
        /// Adds foreign key and foreign key column if specified.
        /// </summary>
        /// <param name="database">The database.</param>
        public override void Migrate(ITransformationProvider database)
        {
            if (GenerateColumn)
            {
                database.AddColumn(ForeignKeyTable, GetColumn());
            }

            database.AddForeignKey(Name, ForeignKeyTable,
                                   new[] { ForeignKeyColumn }, PrimaryKeyTable, new[] { PrimaryKeyColumn }, DeleteConstraint, UpdateConstraint);
        }
コード例 #37
0
 public MigrateAnywhere(List <long> availableMigrations, ITransformationProvider provider, ILogger logger)
     : base(availableMigrations, provider, logger)
 {
     _current = 0;
     if (provider.AppliedMigrations.Count > 0)
     {
         _current = provider.AppliedMigrations[provider.AppliedMigrations.Count - 1];
     }
     _goForward = false;
 }
コード例 #38
0
        public static void RemoveIndex(
            this ITransformationProvider transformation,
            string tableName,
            params string[] columns)
        {
            var indexName = GetIndexName(tableName, columns);
            var sql       = GetRemoveIndexSql(tableName, indexName);

            transformation.ExecuteNonQuery(sql);
        }
コード例 #39
0
 public static void AddForeignKey(this ITransformationProvider provider, string foreignTable, string primaryTable,
                                  ForeignKeyConstraint constraint = ForeignKeyConstraint.NoAction)
 {
     provider.AddForeignKey(foreignTable.ForeignKeyNameTo(primaryTable),
                            foreignTable,
                            primaryTable.ForeignId(),
                            primaryTable,
                            "Id",
                            constraint);
 }
コード例 #40
0
 public static void ExecuteNonQueryNoTimeout(ITransformationProvider p_provider, string p_sqlStatement)
 {
     var command = p_provider.GetCommand();
     command.CommandType = CommandType.Text;
     // 1-24-13 AMB:  Changed from 600 (10 minutes) to 1800 (30 minutes)
     command.CommandTimeout = 1800;
     command.CommandText = p_sqlStatement;
     Console.WriteLine("Executing: {0}", command.CommandText);
     command.ExecuteNonQuery();
 }
コード例 #41
0
        public ConditionByProvider(ITransformationProvider current)
        {
            if (current == null)
            {
                throw new ArgumentNullException(nameof(current));
            }

            currentProvider = current;
            isExecuted      = false;
        }
コード例 #42
0
ファイル: DbMigrator.cs プロジェクト: juanplopes/pilgrim
 public DbMigrator(MigratorOptions options)
 {
     var provider = ProviderFactory.Create(options.Provider, options.ConnectionString);
     _migrationLoader = new MigrationLoader(provider, options.MigrationTypes, false);
     _migrationLoader.CheckForDuplicatedVersion();
     _provider = provider;
     Logger = new Logger(false, new ConsoleWriter());
     _options = options;
     provider.Writer = _options.Commands;
 }
コード例 #43
0
ファイル: DatabaseX.cs プロジェクト: ArunGeorgean/Classic
        public static void RemoveColumnWithSchema(this ITransformationProvider database, string table, string column)
        {
            if (!ColumnExistsWithSchema(database, table, column))
            {
                return;
            }

            database.DeleteColumnConstraints(table, column);
            database.ExecuteNonQuery(string.Format("ALTER TABLE {0} DROP COLUMN {1} ", table, column));
        }
コード例 #44
0
		public MigrationLoader(ITransformationProvider provider, Assembly migrationAssembly, bool trace) {
			_provider = provider;
			AddMigrations(migrationAssembly);

			if (trace) {
				provider.Logger.Trace("Loaded migrations:");
				foreach (Type t in _migrationsTypes) {
					provider.Logger.Trace("{0} {1}", GetMigrationVersion(t).ToString().PadLeft(5), StringUtils.ToHumanName(t.Name));
				}
			}
		}
コード例 #45
0
        public void Create(ITransformationProvider provider)
        {
            provider.AddColumn(_toTable, _column.Name, _column.ColumnType, _column.ColumnProperty, _column.DefaultValue);

            if (_column.ForeignKey != null)
            {
                provider.AddForeignKey(
                    "FK_" + _toTable + "_" + _column.Name + "_" + _column.ForeignKey.PrimaryTable + "_" +
                    _column.ForeignKey.PrimaryKey,
                    _toTable, _column.Name, _column.ForeignKey.PrimaryTable, _column.ForeignKey.PrimaryKey, _column.Constraint);
            }
        }
コード例 #46
0
        public MigrationLoader(ITransformationProvider provider, bool trace, params Assembly[] migrationAssemblies)
        {
            this.provider = provider;
            AddMigrations(migrationAssemblies);

            if (trace)
            {
                provider.Logger.Trace("Loaded migrations:");
                foreach (var m in migrationsTypes)
                {
                    provider.Logger.Trace("{0} {1}", m.Version.ToString().PadLeft(5), StringUtils.ToHumanName(m.Type.Name));
                }
            }
        }
コード例 #47
0
 protected BaseMigrate(string scope, List<long> availableMigrations, ITransformationProvider provider, ILogger logger)
 {
     _provider = provider;
     _availableMigrations = availableMigrations;
     _scope = scope;
     _original = new List<long>(); //clone
     foreach (var appliedMigration in _provider.AppliedMigrations)
     {
         if (scope == appliedMigration.Key)
             _original.Add(appliedMigration.Value);
     }
     _original.Sort();
     _logger = logger;
 }
コード例 #48
0
        public MigrateAnywhere(string scope, List<long> availableMigrations, ITransformationProvider provider, ILogger logger)
            : base(scope, availableMigrations, provider, logger)
        {
			_current = 0;
			if (provider.AppliedMigrations.Count > 0) {
			    foreach (var appliedMigration in provider.AppliedMigrations)
			    {
                    if (appliedMigration.Key != scope)
                        continue;
                    if (_current < appliedMigration.Value)
                        _current = appliedMigration.Value;
			    }
			}
			_goForward = false;
        }
コード例 #49
0
        /// <summary>
        /// Расширяет таблицу SchemaInfo полем AssemblyKey.
        /// Использутеся при переходе от старой версии
        ///
        /// Должно быть удалено в будущем
        /// </summary>
        /// <param name="provider"></param>
        public static void Update1To3(ITransformationProvider provider)
        {
            provider.AddTable(
                "SchemaTmp",
                new Column("Version", DbType.Int64, ColumnProperty.PrimaryKey),
                new Column("AssemblyKey", DbType.String.WithSize(200), ColumnProperty.PrimaryKey, "''"));

            string sql = provider.FormatSql(
                "INSERT INTO {0:NAME} ({1:NAME}) SELECT {1:NAME} FROM {2:NAME}",
                    "SchemaTmp", "Version", "SchemaInfo");

            provider.ExecuteNonQuery(sql);

            provider.RemoveTable("SchemaInfo");
            provider.RenameTable("SchemaTmp", "SchemaInfo");
        }
コード例 #50
0
 public abstract void Execute(ITransformationProvider migration);
コード例 #51
0
		public void Create(ITransformationProvider provider)
		{
			provider.AddTable(_newTable);
		}
コード例 #52
0
 /// <summary>
 /// Changes existing column.
 /// </summary>
 /// <param name="database">The database.</param>
 public override void Migrate(ITransformationProvider database)
 {
     var column = GetColumn();
     
     database.ChangeColumn(TableName, column.Name, column.ColumnType, false);
 }
コード例 #53
0
 public void Create(ITransformationProvider provider)
 {
     provider.RenameTable(_oldName, _newName);
 }
コード例 #54
0
		public void Create(ITransformationProvider provider)
		{
			provider.RemoveTable(_tableName);
		}
コード例 #55
0
 public override void Execute(ITransformationProvider provider)
 {
     provider.RemoveConstraint(this.Table.Name, this.Name);
 }
コード例 #56
0
ファイル: Migrator.cs プロジェクト: svn2github/ecm7migrator
 public Migrator(ITransformationProvider provider, bool trace, params Assembly[] assemblies)
     : this(provider, trace, new Logger(trace, new ConsoleWriter()), assemblies)
 {
 }
コード例 #57
0
 public Migrator(ITransformationProvider provider, Assembly migrationAssembly, bool trace)
     : this(provider, migrationAssembly, trace, new Logger(trace, new ConsoleWriter()))
 {
 }
コード例 #58
0
 public void Execute(ITransformationProvider provider)
 {
     provider.RenameTable(FromName, ToName);
 }
コード例 #59
0
 /// <summary>
 /// Removes table column.
 /// </summary>
 /// <param name="database">The database.</param>
 public override void Migrate(ITransformationProvider database)
 {
     database.RemoveColumn(TableName, Name);
 }