Пример #1
0
        private static void Execute(string connectionString, Assembly callingAssembly, Action<IMigration> beforeExecute, Action<IMigration> afterExecuteSuccess,
            Action<IMigration, Exception> afterExecuteError, Options options)
        {
            using (var migrate = new DatabaseMigrator(connectionString, new AssemblyScanner(callingAssembly), options))
            {
                if (beforeExecute != null) migrate.BeforeExecute += beforeExecute;
                if (afterExecuteSuccess != null) migrate.AfterExecuteSuccess += afterExecuteSuccess;
                if (afterExecuteError != null) migrate.AfterExecuteError += afterExecuteError;

                migrate.MigrateDatabase();
            }
        }
Пример #2
0
        /// <summary>
        /// Picks up migrations from the calling assembly and executes them against the database specified by the given connection string.
        /// The connection string can be specified either by providing a key of a connection string in the connectionStrings configuration
        /// section of your app.config/web.config, or by providing the raw connection string.
        /// </summary>
        public static void Database(string connectionStringOrConnectionStringKey,
            Action<IMigration> beforeExecute = null,
            Action<IMigration> afterExecuteSuccess = null,
            Action<IMigration, Exception> afterExecuteError = null,
            Options options = null)
        {
            var migrationOptions = options ?? new Options();
            var connectionStringSettings = ConfigurationManager.ConnectionStrings[connectionStringOrConnectionStringKey];

            var connectionString = connectionStringSettings != null
                ? connectionStringSettings.ConnectionString
                : connectionStringOrConnectionStringKey;

            var callingAssembly = Assembly.GetCallingAssembly();

            Execute(connectionString, callingAssembly, beforeExecute, afterExecuteSuccess, afterExecuteError, migrationOptions);
        }
Пример #3
0
        /// <summary>
        /// Executes the given migrations on the specified database.
        /// </summary>
        /// <param name="connectionStringOrConnectionStringName">Specifies a connection string or the name of a connection string in the current application configuration file to use.</param>
        /// <param name="migrations">Supplies the migrations to be executed.</param>
        /// <param name="options">Optionally specifies some custom options to use.</param>
        public static void Migrate(string connectionStringOrConnectionStringName, Migrations migrations, Options options = null)
        {
            options = options ?? new Options();

            var connectionString = ConfigurationManager.ConnectionStrings[connectionStringOrConnectionStringName]?.ConnectionString
                                ?? connectionStringOrConnectionStringName;

            var writer = options.GetWriter();

            var migrator = new DatabaseMigratorCore(
                db: GetDatabase(),
                migrationTableName: options.MigrationTableName,
                writer: writer,
                connectionString: connectionString);

            var executableSqlMigrations = migrations.GetMigrations();

            migrator.Execute(executableSqlMigrations);
        }
Пример #4
0
        private DatabaseMigrator(IDbConnection dbConnection, bool ownsTheDbConnection, IProvideMigrations provideMigrations, Options options)
        {
            _ownsTheDbConnection = ownsTheDbConnection;
            _provideMigrations = provideMigrations;
            _dbConnection = dbConnection;

            if (options.VersionTableName != null)
            {
                _communicator = new TablePersister(options.VersionTableName);
            }

            if (_communicator == null) //use default
            {
                _communicator = new ExtendedPropertiesPersister();
            }

            if (ownsTheDbConnection)
            {
                dbConnection.Open();
            }
        }
Пример #5
0
 public DatabaseMigrator(string connectionString, IProvideMigrations provideMigrations, Options options)
     : this(CreateDbConnection(connectionString), true, provideMigrations, options)
 {
 }
Пример #6
0
 public DatabaseMigrator(IDbConnection dbConnection, IProvideMigrations provideMigrations, Options options)
     : this(dbConnection, false, provideMigrations, options)
 {
 }