Пример #1
0
        public SqlPreCommand SynchronizationScript(bool interactive = true, bool schemaOnly = false, string replaceDatabaseName = null)
        {
            OnBeforeDatabaseAccess();

            if (Synchronizing == null)
            {
                return(null);
            }

            using (CultureInfoUtils.ChangeBothCultures(ForceCultureInfo))
                using (ExecutionMode.Global())
                {
                    Replacements replacements = new Replacements()
                    {
                        Interactive = interactive, ReplaceDatabaseName = replaceDatabaseName, SchemaOnly = schemaOnly
                    };
                    SqlPreCommand command = Synchronizing
                                            .GetInvocationListTyped()
                                            .Select(e =>
                    {
                        try
                        {
                            return(e(replacements));
                        }
                        catch (Exception ex)
                        {
                            return(new SqlPreCommandSimple("-- Exception on {0}.{1}\r\n{2}".FormatWith(e.Method.DeclaringType.Name, e.Method.Name, ex.Message.Indent(2, '-'))));
                        }
                    })
                                            .Combine(Spacing.Triple);

                    return(command);
                }
        }
Пример #2
0
        public SqlPreCommand?SynchronizationScript(bool interactive = true, bool schemaOnly = false, string?replaceDatabaseName = null)
        {
            OnBeforeDatabaseAccess();

            if (Synchronizing == null)
            {
                return(null);
            }

            using (CultureInfoUtils.ChangeBothCultures(ForceCultureInfo))
                using (ExecutionMode.Global())
                {
                    Replacements replacements = new Replacements()
                    {
                        Interactive         = interactive,
                        ReplaceDatabaseName = replaceDatabaseName,
                        SchemaOnly          = schemaOnly
                    };
                    SqlPreCommand?command = Synchronizing
                                            .GetInvocationListTyped()
                                            .Select(e =>
                    {
                        try
                        {
                            SafeConsole.WriteColor(ConsoleColor.White, e.Method.DeclaringType !.TypeName());
                            Console.Write(".");
                            SafeConsole.WriteColor(ConsoleColor.DarkGray, e.Method.MethodName());
                            Console.Write("...");

                            var result = e(replacements);

                            if (result == null)
                            {
                                SafeConsole.WriteLineColor(ConsoleColor.Green, "OK");
                            }
                            else
                            {
                                SafeConsole.WriteLineColor(ConsoleColor.Yellow, "Changes");
                            }

                            return(result);
                        }
                        catch (Exception ex)
                        {
                            SafeConsole.WriteColor(ConsoleColor.Red, "Error");
                            SafeConsole.WriteLineColor(ConsoleColor.DarkRed, " (...it's probably ok, execute this script and try again)");

                            return(new SqlPreCommandSimple("-- Exception on {0}.{1}\r\n{2}".FormatWith(e.Method.DeclaringType !.Name, e.Method.Name, ex.Message.Indent(2, '-'))));
                        }
                    })
                                            .Combine(Spacing.Triple);

                    return(command);
                }
        }