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); }
private void SaveTableViewModel(string directoryPath, DbProject project, Entity entity, string namespaceName) { var className = entity.Table.Name + @"ViewModel" + @".cs"; var sourceCode = project.CreateTableViewModel(entity); var buffer = new StringBuilder(sourceCode.Length); AddUsingsForTableViewModels(namespaceName, buffer, !project.IsModifiable(entity.Table)); AddNamespace(buffer, namespaceName, ViewModels, sourceCode); SaveToFile(directoryPath, className, buffer); }
private void SaveModules(string directoryPath, DbProject project, Entity[] entities, string namespaceName) { foreach (var entity in entities) { if (project.IsHidden(entity.Table)) { continue; } var className = entity.Class.Name + @"Module" + @".cs"; var sourceCode = project.CreateClassModule(entity); var buffer = new StringBuilder(sourceCode.Length); AddUsingsForModules(namespaceName, buffer, !project.IsModifiable(entity.Table)); AddNamespace(buffer, namespaceName, Modules, sourceCode); SaveToFile(directoryPath, className, buffer); } }
private void SaveHelpers(string directoryPath, DbProject project, Entity[] entities, string namespaceName) { foreach (var entity in entities) { // Create helpers only fore ReadOnly tables if (project.IsModifiable(entity.Table)) { continue; } var className = entity.Class.Name + @"Helper" + @".cs"; var sourceCode = project.CreateEntityHelper(entity); var buffer = new StringBuilder(sourceCode.Length); AddUsingsForHelpers(buffer, namespaceName); AddNamespace(buffer, namespaceName, Helpers, sourceCode); SaveToFile(directoryPath, className, buffer); } }
private void SaveAdapters(string directoryPath, DbProject project, Entity[] entities, string namespaceName) { foreach (var entity in entities) { var className = entity.Class.Name + @"Adapter" + @".cs"; var sourceCode = project.CreateEntityAdapter(entity); var buffer = new StringBuilder(sourceCode.Length); AddUsingsForAdapters(buffer, entity, namespaceName, !project.IsModifiable(entity.Table)); AddNamespace(buffer, namespaceName, Adapters, sourceCode); SaveToFile(directoryPath, className, buffer); } }
private void AddUsingsForObjects(StringBuilder buffer, Entity entity, DbProject project) { var hasReferenceType = false; foreach (var clrProperty in entity.Class.Properties) { if (clrProperty.Type.IsReference) { hasReferenceType = true; break; } } if (hasReferenceType) { // For ArgumentNullException class buffer.AppendLine(@"using System;"); } if (project.IsModifiable(entity.Table)) { // For IDbObject interface buffer.AppendLine(@"using Cchbc.Objects;"); } if (entity.InverseTable != null) { // For the List<T> class buffer.AppendLine(@"using System.Collections.Generic;"); } // Separate usings from namespace if any usings var hasUsings = buffer.Length > 0; if (hasUsings) { buffer.AppendLine(); } }