public void Save(string directoryPath, DbProject project) { if (directoryPath == null) throw new ArgumentNullException(nameof(directoryPath)); if (project == null) throw new ArgumentNullException(nameof(project)); // Create directory names for Objects, Adapters, Helpers, ... var objectsPath = Path.Combine(directoryPath, Objects); var adaptersPath = Path.Combine(directoryPath, Adapters); var helpersPath = Path.Combine(directoryPath, Helpers); var modulesPath = Path.Combine(directoryPath, Modules); var viewModelsPath = Path.Combine(directoryPath, ViewModels); // Create directories this.CreateDirectory(objectsPath); this.CreateDirectory(adaptersPath); this.CreateDirectory(helpersPath); this.CreateDirectory(modulesPath); this.CreateDirectory(viewModelsPath); var namespaceName = project.Schema.Name; var entities = project.CreateEntities(); SaveObjects(objectsPath, project, entities, namespaceName); SaveAdapters(adaptersPath, project, entities, namespaceName); SaveHelpers(helpersPath, project, entities, namespaceName); SaveModules(modulesPath, project, entities, namespaceName); SaveViewModels(viewModelsPath, project, entities, namespaceName); }
private static void GenerateProject(DbProject project, string directoryPath) { var buffer = new StringBuilder(1024 * 80); foreach (var entity in project.CreateEntities()) { // Classes var entityClass = project.CreateEntityClass(entity); buffer.AppendLine(entityClass); buffer.AppendLine(EntityClass.GenerateClassViewModel(entity, !project.IsModifiable(entity.Table))); buffer.AppendLine(project.CreateTableViewModel(entity)); if (!project.IsModifiable(entity.Table)) { buffer.AppendLine(project.CreateTableViewModel(entity)); } // Read Only adapters var adapter = !project.IsModifiable(entity.Table) ? project.CreateEntityAdapter(entity) : project.CreateEntityAdapter(entity); buffer.AppendLine(adapter); } var clrProject = new ClrProject(); clrProject.WriteAllText = File.WriteAllText; clrProject.CreateDirectory = path => { if (Directory.Exists(path)) { Directory.Delete(path, true); } Directory.CreateDirectory(path); }; clrProject.Save(directoryPath, project); var tmp = DbScript.CreateTables(project.Schema.Tables); Console.WriteLine(tmp); }