/// <summary> /// Executes all the EF data context migrations against the configured database /// </summary> private void EnsureMigrations(DbTestRunnerConfiguration config, IDbTestRunnerContext context, DbInitializationResult result) { try { using (var scope = context.ServiceProvider.CreateScope()) { var migrationRunner = scope.ServiceProvider.GetService <DataMigrationRunner>(); migrationRunner.ApplyMigrations(config.DataContextType); result.Logs.Add("DB Migrations completed."); result.IsSuccessful = true; } } catch (Exception e) { result.Logs.Add($"Encountered exception running migrations. Exception: {e.Message} Details: {e}"); throw; } }
protected override void InitializeSchemaAndData(IDbTestRunnerConfiguration config, IDbTestRunnerContext context, DbInitializationResult result) { if (!(config is DbTestRunnerConfiguration adoConfig)) { result.IsSuccessful = false; result.Logs.Add($"Failed to initialize schema and database. Configuration is not of the expected type. Expected: {typeof(DbTestRunnerConfiguration).FullName} actual: {config.GetType().FullName}"); return; } var connStr = this.ProduceConnectionString(config, context.DbName); if (string.IsNullOrEmpty(connStr)) { result.IsSuccessful = false; result.Logs.Add("Failed to initialize schema and database. Configuration string is empty or null."); return; } result.Logs.Add($"Attempting to initialize DB Schema and Data using connection string: {connStr}"); result.IsSuccessful = adoConfig.InitializeDbSchemaAndData(connStr, result.WasDatabaseCreated); }
protected override void InitializeSchemaAndData(IDbTestRunnerConfiguration config, IDbTestRunnerContext context, DbInitializationResult result) { if (!(config is DbTestRunnerConfiguration efConfig)) { result.IsSuccessful = false; result.Logs.Add($"Failed to initialize schema and database. Configuration is not of the expected type. Expected: {typeof(DbTestRunnerConfiguration).FullName} actual: {config.GetType().FullName}"); return; } result.Logs.Add($"Preparing Database with {efConfig.DataContextType} migrations."); EnsureMigrations(efConfig, context, result); }