Esempio n. 1
0
        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;
            }
        }
Esempio n. 3
0
 internal static void FailMigrationSession(
     Action <MigrationSession> upsertMigrationSession,
     MigrationSession migrationSession,
     MigrationException migrationException)
 {
     migrationSession.FailMigrationSession(migrationException);
     upsertMigrationSession(migrationSession);
 }
Esempio n. 4
0
 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;
 }
Esempio n. 8
0
        /// <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);
            }
        }
Esempio n. 9
0
 /// <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);
 }
Esempio n. 10
0
 /// <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);
 }