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(); } }
/// <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); }
/// <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); }
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(); } }
public DatabaseMigrator(string connectionString, IProvideMigrations provideMigrations, Options options) : this(CreateDbConnection(connectionString), true, provideMigrations, options) { }
public DatabaseMigrator(IDbConnection dbConnection, IProvideMigrations provideMigrations, Options options) : this(dbConnection, false, provideMigrations, options) { }