public void BuildProcedureCode(DatabaseSchema databaseSchema, DatabaseStoredProcedure databaseStoredProcedure) { try { //grab the data if (databaseStoredProcedure.ResultSets.Count == 0) { //Delete sprocs won't have resultsets, so will get called multiple times var sprocRunner = new DatabaseSchemaReader.Procedures.ResultSetReader(databaseSchema); sprocRunner.ExecuteProcedure(databaseStoredProcedure); } //write it var sprocWriter = new ProcedureWriter(databaseStoredProcedure, "Domain"); var txt = sprocWriter.Write(); Clipboard.SetText(txt, TextDataFormat.UnicodeText); } catch (Exception exception) { Clipboard.SetText("//sorry, not available - " + exception.Message, TextDataFormat.UnicodeText); Debug.WriteLine(exception.Message); } }
public void RunCodeWriter() { if (_readProcedures) { var sprocRunner = new DatabaseSchemaReader.Procedures.ResultSetReader(_databaseSchema); sprocRunner.Execute(); } var settings = new CodeWriterSettings { Namespace = _ns, CodeTarget = CodeTarget }; //these have no UI, but the user can edit the config. settings.UseForeignKeyIdProperties = Properties.Settings.Default.CodeGenUseForeignKeyIdProperties; if (Properties.Settings.Default.CodeGenUsePluralizingNamer) { settings.Namer = new PluralizingNamer(); } //if poco, write the sprocs - or if read the sprocs, we can generate settings.WriteStoredProcedures = (_readProcedures || CodeTarget == CodeTarget.Poco); settings.WriteUnitTest = Properties.Settings.Default.CodeGenWriteUnitTest; settings.WriteProjectFile = Properties.Settings.Default.CodeGenWriteProjectFile; settings.IncludeViews = Properties.Settings.Default.CodeGenIncludeViews; settings.WriteCodeFirstIndexAttribute = Properties.Settings.Default.CodeGenWriteIndexAttribute; var cw = new CodeWriter(_databaseSchema, settings); try { cw.Execute(_directory); Message = @"Wrote to " + _directory.FullName; Result = true; return; } catch (IOException exception) { Message = @"An IO error occurred while opening the file.\n" + exception.Message; } catch (UnauthorizedAccessException exception) { Message = @"The caller does not have the required permission or path is readonly.\n" + exception.Message; } Result = false; }
public static string GenerateStoredProcedure(DatabaseStoredProcedure proc) { if (_procedureTemplate == null) { _procedureTemplate = ReadTemplate("storedProcedure"); } var builder = new StringBuilder(_procedureTemplate); var sprocRunner = new DatabaseSchemaReader.Procedures.ResultSetReader(proc.DatabaseSchema); sprocRunner.ExecuteProcedure(proc); var resultsets = proc.ResultSets; var propertyString = ""; if (resultsets.Count <= 0) { return(builder.Replace("$name$", proc.Name) .Replace("$properties$", propertyString).ToString()); } var properties = proc.ResultSets.First().Columns.Select(GenerateAutoPropertySp).ToList(); propertyString = properties.Aggregate((c, n) => c + n); return(builder.Replace("$name$", proc.Name) .Replace("$properties$", propertyString).ToString()); }