private void ButtonGenerateBaseRepo_Click(object sender, RoutedEventArgs e) { string output = string.Empty; var gen = new CsDbContextGenerator(GeneratorSettings, Model); output = gen.Generate(); txtOutput.Text = output; }
public static async Task WriteCsRepositoryClassesFileAsync(TSqlModel model, GeneratorSettings generatorSettings, Action <double> progressHandler = null) { var fileName = generatorSettings.OutputPath_CsRepositoryClasses; var tables = model.GetAllTables().ToDictionary(currTable => currTable.Name.Parts[1].ToLower()); double progress = 0.0; var fileStream = File.Open(fileName, FileMode.Create, FileAccess.Write); var bufferSize = 5 * 1024 * 1024; // 5 MB using (StreamWriter writer = new StreamWriter(fileStream, Encoding.UTF8, bufferSize)) { // Flush stream after every table writer.AutoFlush = false; string cs = ""; // Loop only on selected tables, or on every table in model if GenerateForAllTables == true IEnumerable <string> tableNames; if (generatorSettings.RunGeneratorForAllTables) { tableNames = tables.Keys; } else { tableNames = (IEnumerable <string>)generatorSettings.RunGeneratorForSelectedTables ?? new string[0]; } var tablesCount = tableNames.Count(); cs = new CsDbContextGenerator(generatorSettings, model).Generate(); writer.WriteLine(cs); await writer.FlushAsync(); foreach (var currTableName in tableNames) { var currTable = tables.ContainsKey(currTableName.ToLower()) ? tables[currTableName.ToLower()] : null; if (currTable != null) { cs = new CsRepositoryClassGenerator(generatorSettings, currTable).Generate(); if (cs != string.Empty) { writer.WriteLine(cs); } await writer.FlushAsync(); progress += 100.0 / tablesCount; progressHandler?.Invoke((int)progress); } } } return; }