public void ConstructWithMessage() { var me = new MigrationException("hello", new Exception("inner")); me.Message.Should().Be("hello"); me.InnerException.Message.Should().Be("inner"); }
public MigrationResult ExecuteMigration(string connectionString, string scriptFilePath) { // Generate C# DataContext using SqlMetal var sqlMetalConnectionStringArg = GetSqlMetalConnectionStringArg(connectionString); var generatedCSharpDataContext = new LinqToSQLDataContextGenerator().GenerateDataContext_AndGetCSharpCode(connectionString, sqlMetalConnectionStringArg, dbmlManipulator); // Get LinqPad Script var linqpadCreator = new LinqPadCSharpCreator(); var script = linqpadCreator.Parse(scriptFilePath); // Add namespace for DataContext script.Namespaces.Add(LinqToSQLDataContextGenerator.DataContextNamespace); // Convert LinqPad Script to Executable Source Code var executableScript = linqpadCreator.MakeScriptExecutable(script, generatedCSharpDataContext); Action <Exception> logExceptionWithSourceCode = (ex) => { string primarySourceCode = executableScript.SourceCodePieces.First(); logger.ErrorException(scriptFilePath, ex); logger.Error(primarySourceCode); }; // Create Compiler var csharpProvider = new CSharpCodeProvider(); IScriptCompiler compiler = new CodeDomScriptCompiler(csharpProvider); Assembly assembly = null; try { // Compile Script > .NET Assembly assembly = compiler.Compile(executableScript.AssemblyReferences, executableScript.SourceCodePieces); } catch (Exception ex) { var myException = new MigrationException(new MigrationResult(scriptFilePath, false, new[] { "Failed to compile script." }, ex)); logExceptionWithSourceCode(myException); throw myException; } IScriptExecutor executor = GetScriptExecutor(script); try { // Execute! var result = executor.Execute(assembly, scriptFilePath); return(result); } catch (MigrationException ex) { logExceptionWithSourceCode(ex); throw ex; } catch (Exception ex) { var myException = new MigrationException(new MigrationResult(scriptFilePath, false, new[] { "Failed to execute compiled script." }, ex)); logExceptionWithSourceCode(myException); throw myException; } }
internal static void FailMigrationSession( Action <MigrationSession> upsertMigrationSession, MigrationSession migrationSession, MigrationException migrationException) { migrationSession.FailMigrationSession(migrationException); upsertMigrationSession(migrationSession); }
internal static Task FailMigrationSessionAsync( Func <MigrationSessionAsync, Task> upsertMigrationSession, MigrationSessionAsync migrationSession, MigrationException migrationException) { migrationSession.FailMigrationSession(migrationException); return(upsertMigrationSession(migrationSession)); }
void process_MigrationSuccessful(IMigrationTask task, IMigrationContext context, MigrationException e) { succeeded = true; }
void process_MigrationStarted(IMigrationTask task, IMigrationContext context, MigrationException e) { started = true; }
void process_MigrationFailed(IMigrationTask task, IMigrationContext context, MigrationException e) { failed = true; }
/// <seealso cref="MigrationProcess.MigrationStatusEventHandler(IMigrationTask, IMigrationContext, MigrationException)"/> public void MigrationSuccessful(IMigrationTask task, IMigrationContext ctx, MigrationException e) { log.Debug("Task " + task.Name + " was successful for context " + ctx + " in launcher " + this); int patchLevel = task.Level.Value; // update all of our controlled patch tables foreach (IPatchInfoStore patchInfoStore in contexts.Values) { patchInfoStore.UpdatePatchLevel(patchLevel); } }
/// <seealso cref="MigrationProcess.MigrationStatusEventHandler(IMigrationTask, IMigrationContext, MigrationException)"/> public void MigrationStarted(IMigrationTask task, IMigrationContext ctx, MigrationException e) { log.Debug("Started task " + task.Name + " for context " + ctx); }
/// <seealso cref="MigrationProcess.MigrationStatusEventHandler(IMigrationTask, IMigrationContext, MigrationException)"/> public void MigrationFailed(IMigrationTask task, IMigrationContext ctx, MigrationException e) { log.Debug("Task " + task.Name + " failed for context " + ctx, e); }