public ScaffoldedModel ScaffoldModel(string connectionString, ProcedureScaffolderOptions procedureScaffolderOptions) { var result = new ScaffoldedModel(); var model = procedureModelFactory.Create(connectionString); foreach (var procedure in model.Procedures) { var name = GenerateIdentifierName(procedure.Name) + "Result"; var classContent = WriteResultClass(procedure, procedureScaffolderOptions.ModelNamespace, name); result.AdditionalFiles.Add(new ScaffoldedFile { Code = classContent, Path = $"{name}.cs", }); } var dbContext = WriteProcedureDbContext(procedureScaffolderOptions, model); result.ContextFile = new ScaffoldedFile { Code = dbContext, Path = Path.GetFullPath(Path.Combine(procedureScaffolderOptions.ContextDir, procedureScaffolderOptions.ContextName + "Procedures.cs")), }; return(result); }
public ScaffoldedModel ScaffoldModel(string connectionString, ProcedureScaffolderOptions procedureScaffolderOptions) { var model = procedureModelFactory.Create(connectionString, new ProcedureModelFactoryOptions { Procedures = procedureScaffolderOptions.Procedures }); foreach (var procedure in model.Procedures) { } //TODO Generate code and file names here! return(null); }
public SavedModelFiles GenerateStoredProcedures( ReverseEngineerCommandOptions options, ref List <string> errors, string outputContextDir, string modelNamespace, string contextNamespace, bool supportsProcedures) { if (options == null) { throw new ArgumentNullException(nameof(options)); } var procedureModelScaffolder = procedureModelFactory; if (procedureModelScaffolder != null && supportsProcedures && (options.Tables.Any(t => t.ObjectType == ObjectType.Procedure) || !options.Tables.Any())) { var procedureModelFactoryOptions = new ModuleModelFactoryOptions { DiscoverMultipleResultSets = options.UseMultipleSprocResultSets, UseLegacyResultSetDiscovery = options.UseLegacyResultSetDiscovery && !options.UseMultipleSprocResultSets, FullModel = true, Modules = options.Tables.Where(t => t.ObjectType == ObjectType.Procedure).Select(m => m.Name), ModulesUsingLegacyDiscovery = options.Tables .Where(t => t.ObjectType == ObjectType.Procedure && t.UseLegacyResultSetDiscovery) .Select(m => m.Name), MappedModules = options.Tables .Where(t => t.ObjectType == ObjectType.Procedure && !string.IsNullOrEmpty(t.MappedType)) .Select(m => new { m.Name, m.MappedType }) .ToDictionary(m => m.Name, m => m.MappedType), }; var procedureModel = procedureModelFactory.Create(options.Dacpac ?? options.ConnectionString, procedureModelFactoryOptions); ApplyRenamers(procedureModel.Routines, options.CustomReplacers); var procedureOptions = new ModuleScaffolderOptions { ContextDir = outputContextDir, ContextName = options.ContextClassName, ContextNamespace = contextNamespace, ModelNamespace = modelNamespace, NullableReferences = options.UseNullableReferences, UseSchemaFolders = options.UseSchemaFolders, UseAsyncCalls = options.UseAsyncCalls, }; var procedureScaffoldedModel = procedureScaffolder.ScaffoldModel(procedureModel, procedureOptions, ref errors); if (procedureScaffoldedModel != null) { return(procedureScaffolder.Save( procedureScaffoldedModel, Path.GetFullPath(Path.Combine(options.ProjectPath, options.OutputPath ?? string.Empty)), contextNamespace, options.UseAsyncCalls)); } } return(null); }