예제 #1
0
        private static void ImportFromConfigFile()
        {
            string connectionString = AppConfigReader.GetString("Database", "ConnectionString");

            if (!string.IsNullOrEmpty(connectionString))
            {
                ConnectionString = connectionString;
            }

            string database = AppConfigReader.GetStringOrDefault("Database", "Database");

            if (!string.IsNullOrEmpty(database))
            {
                Database = database;
            }

            string runUpgradeScripts = AppConfigReader.GetStringOrDefault("UpgradeScripts", "Enabled");

            RunUpgradeScripts = string.Equals(runUpgradeScripts, "true", StringComparison.InvariantCultureIgnoreCase);

            string upgradeScriptDirectory = AppConfigReader.GetStringOrDefault("UpgradeScripts", "ScriptDirectory");

            if (!string.IsNullOrEmpty(upgradeScriptDirectory))
            {
                UpgradeScriptDirectory = upgradeScriptDirectory;
            }

            string upgradeFileRegex = AppConfigReader.GetStringOrDefault("UpgradeScripts", "ScriptFileRegex");

            if (upgradeFileRegex != null)
            {
                UpgradeScriptFileRegex = upgradeFileRegex;
            }

            string runCodeGeneration = AppConfigReader.GetStringOrDefault("CodeGeneration", "Enabled");

            RunEntityCodeGeneration = string.Equals(runCodeGeneration, "true", StringComparison.InvariantCultureIgnoreCase);

            string codeTemplateDirectory = AppConfigReader.GetStringOrDefault("CodeGeneration", "TemplateDirectory");

            if (!string.IsNullOrEmpty(codeTemplateDirectory))
            {
                TemplateDirectory = codeTemplateDirectory;
            }

            string[] databaseSchemas = AppConfigReader.GetArrayOrDefault("CodeGeneration", "DatabaseSchemas");
            if (databaseSchemas != null)
            {
                DatabaseSchemas = databaseSchemas;
            }

            string runCodeBuild = AppConfigReader.GetStringOrDefault("CodeBuild", "Enabled");

            RunCodeBuild = string.Equals(runCodeBuild, "true", StringComparison.InvariantCultureIgnoreCase);

            string doLogging = AppConfigReader.GetStringOrDefault("Logging", "Enabled");

            DoLogging = string.Equals(doLogging, "true", StringComparison.InvariantCultureIgnoreCase);

            string logFile = AppConfigReader.GetStringOrDefault("Logging", "LogFile");

            if (!string.IsNullOrEmpty(logFile))
            {
                SetLogFile(logFile);
            }

            string logMessagePrefix = AppConfigReader.GetStringOrDefault("Logging", "LogLinePrefix");

            if (logMessagePrefix != null)
            {
                LogMessagePrefix = logMessagePrefix;
            }

            string verboseLogging = AppConfigReader.GetStringOrDefault("Logging", "Verbose");

            VerboseLogging = string.Equals(verboseLogging, "true", StringComparison.InvariantCultureIgnoreCase);
        }
예제 #2
0
        public static void ProcessArguments(string[] args)
        {
            SetDefaultConfiguration();
            try
            {
                for (int i = 0; i < args.Length; i++)
                {
                    string arg = args[i].ToLower();
                    switch (arg)
                    {
                    case HelpSwitch:
                        PrintHelpPage();
                        Environment.Exit((int)ExitCode.OK);
                        break;

                    case ConfigFileSwitch:
                        AppConfigReader.LoadConfigurationFromFile(args[++i]);
                        ImportFromConfigFile();
                        break;

                    // Upgrade Script options
                    case UpgradeScriptSwitch:
                        RunUpgradeScripts = true;
                        break;

                    case UpgradeScriptDirectorySwitch:
                        UpgradeScriptDirectory = args[++i];
                        break;

                    case UpgradeScriptFileRegexSwitch:
                        UpgradeScriptFileRegex = args[++i];
                        break;

                    case UpgradeScriptTemplateGuidMonikerSwitch:
                        UpgradeScriptTemplateGuidMonikerPrefix = args[++i];
                        break;

                    // Entity code generation options
                    case EntityCodeGenerationSwitch:
                        RunEntityCodeGeneration = true;
                        break;

                    case TemplateDirectorySwitch:
                        TemplateDirectory = args[++i];
                        break;

                    case DatabaseSchemaListSwitch:
                        DatabaseSchemas = args[++i].Split(';');
                        break;

                    case CodeGenOutputSwitch:
                        EntityCodeOutputDirectory = args[++i];
                        break;

                    // Code build options
                    case CodeBuildSwitch:
                        RunCodeBuild = true;
                        break;

                    case ProjectNameSwitch:
                        ProjectName = args[++i];
                        break;


                    // Logging options
                    case LogFileSwitch:
                        DoLogging = true;
                        SetLogFile(args[++i]);
                        break;

                    case DebugSwitch:
                    case VerboseLoggingSwitch:
                        VerboseLogging = true;
                        break;

                    case LogMessagePrefixSwitch:
                        LogMessagePrefix = args[++i];
                        break;

                    // Database options
                    case DatabaseConnectionStringSwitch:
                        ConnectionString = args[++i];
                        break;

                    case DatabaseSwitch:
                        Database = args[++i];
                        break;
                    }
                }

                CheckDatabase();
                if (DatabaseSchemas.Contains("*"))
                {
                    string schemaQuery =
                        $"USE [{Database}] " +
                        "SELECT DISTINCT s.[name] FROM sys.tables t " +
                        "INNER JOIN sys.schemas s ON s.schema_id = t.schema_id " +
                        "WHERE s.[name] != 'dbo' " +
                        "UNION ALL SELECT 'dbo'";
                    var    queryResults = SQLInterface.ExecuteQueryIntoDataTable(schemaQuery);
                    string result       = "";
                    foreach (DataRow row in queryResults.Rows)
                    {
                        result += row.ItemArray[0].ToString() + ",";
                    }

                    DatabaseSchemas = result.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"ERROR: {e.Message}");
                PrintHelpPage();
                Environment.Exit((int)ExitCode.ArgumentError);
            }
        }