public VisualBasicNonSingletonStrategy(string connectionString, string directory, string @namespace) { ConnectionString = connectionString; Directory = directory; Namespace = @namespace; Generator = new VisualBasicGenerator <TDatabase>(connectionString, ModelDirectory, $"{@namespace}"); }
public VisualBasicSingletonStrategy(string connectionString, string directory, string @namespace, Func <string, string> func = null) { ConnectionString = connectionString; Directory = directory; Namespace = @namespace; Generator = new VisualBasicGenerator <TDatabase>(connectionString, ModelDirectory, $"{@namespace}"); if (func != null) { Generator.SetCleanser(func); } }
static void Main(string[] args) { if(args.Length < 2) throw new ApplicationException("You must supply a dbml file and an output file as parameters."); string dbmlFile = args[0]; string outputFile = args[1]; bool functionsOnly = (args.Length > 2 && args[2].ToLower() == "functionsonly"); bool visualBasic = (args.Length == 3 && args[2].ToLower() == "vb") || (args.Length == 4 && args[3].ToLower() == "vb"); if (!File.Exists(dbmlFile)) throw new ApplicationException("Invalid dbml file specified."); ContextDefinition definition = ReadDefinitionFromFile(dbmlFile); IList<ContextType> types = ReadTypesFromFile(dbmlFile); IList<ContextFunction> functions = ReadFunctionsFromFile(dbmlFile); IGenerator generator; if (!visualBasic) generator = new Generator(definition, types, functions, functionsOnly); else { generator = new VisualBasicGenerator(definition, types, functions, functionsOnly); } bool foundFile = false; FileAttributes savedAttrs = FileAttributes.Normal; if (File.Exists(outputFile)) { savedAttrs = File.GetAttributes(outputFile); File.SetAttributes(outputFile, FileAttributes.Normal); foundFile = true; } generator.GenerateContext(outputFile); Console.WriteLine(outputFile + " written."); if (foundFile) { File.SetAttributes(outputFile, savedAttrs); } }
public static void PerformModelGenerate(TargetLanguage targetLanguage, TargetDatabaseConnector targetDatabaseConnector, string connectionString, string directory, string @namespace) { IModelGenerator generator = default; switch (targetLanguage) { case TargetLanguage.CSharp: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new CSharpGenerator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new CSharpGenerator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new CSharpGenerator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new CSharpGenerator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new CSharpGenerator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; case TargetLanguage.VisualBasic: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new VisualBasicGenerator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new VisualBasicGenerator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new VisualBasicGenerator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new VisualBasicGenerator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new VisualBasicGenerator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; case TargetLanguage.TypeScript: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new TypeScriptGenerator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new TypeScriptGenerator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new TypeScriptGenerator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new TypeScriptGenerator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new TypeScriptGenerator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; case TargetLanguage.PHP: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new PHPGenerator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new PHPGenerator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new PHPGenerator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new PHPGenerator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new PHPGenerator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; case TargetLanguage.Python: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new PythonGenerator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new PythonGenerator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new PythonGenerator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new PythonGenerator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new PythonGenerator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; case TargetLanguage.Python37: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new Python37Generator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new Python37Generator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new Python37Generator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new Python37Generator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new Python37Generator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; case TargetLanguage.Java: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new JavaGenerator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new JavaGenerator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new JavaGenerator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new JavaGenerator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new JavaGenerator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; case TargetLanguage.CPP: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new CPPGenerator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new CPPGenerator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new CPPGenerator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new CPPGenerator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new CPPGenerator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; case TargetLanguage.Golang: switch (targetDatabaseConnector) { case TargetDatabaseConnector.SQLServer: generator = new GolangGenerator <SqlConnection, SqlParameter>(connectionString, directory, @namespace, x => $"[{x}]"); break; case TargetDatabaseConnector.Oracle: generator = new GolangGenerator <OracleConnection, OracleParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.MySQL: generator = new GolangGenerator <MySqlConnection, MySqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.PostgreSQL: generator = new GolangGenerator <NpgsqlConnection, NpgsqlParameter>(connectionString, directory, @namespace); break; case TargetDatabaseConnector.SQLite: generator = new GolangGenerator <SQLiteConnection, SQLiteParameter>(connectionString, directory, @namespace); break; } break; } generator.Generate(); }