public static void GenerateModel(string tableName) { var fieldList = generateDal.GetFieldList(tableName); var tableModel = generateDal.GetTableList().Single(o => o.Name == tableName); ModelTemplate modelTemplate = new ModelTemplate(fieldList, tableModel); String contentModel = modelTemplate.TransformText(); System.IO.File.WriteAllText(Utility.FileHelper.PathExists(Config.BusinessEntitiesPath, tableName, Enums.GenerateType.Model), contentModel, Encoding.UTF8); }
public void GenerateDomainProject(DomainDataService dataService, string outputFolder) { outputFolder = Path.Combine(outputFolder, $"{dataService.Solution.NamespacePrefix}.{dataService.Name}.Domain"); var constantsFolder = Path.Combine(outputFolder, "Constants"); var modelsFolder = Path.Combine(outputFolder, "Models"); var metadataFolder = Path.Combine(outputFolder, "Metadata"); ReplaceDirectories(constantsFolder, modelsFolder, metadataFolder); var session = new Dictionary <string, object>(); session.Add("DomainDataService", dataService); DomainProjectTemplate projectTemplate = new DomainProjectTemplate(); projectTemplate.Session = session; projectTemplate.Initialize(); string content = projectTemplate.TransformText(); File.WriteAllText(Path.Combine(outputFolder, $"{dataService.Solution.NamespacePrefix}.{dataService.Name}.Domain.csproj"), content); DomainConstantsTemplate constantsTemplate = new DomainConstantsTemplate(); constantsTemplate.Session = session; constantsTemplate.Initialize(); content = constantsTemplate.TransformText(); File.WriteAllText(Path.Combine(constantsFolder, $"{dataService.Name}Constants.cs"), content); if (!(dataService.Schemas is null)) { foreach (var domainObject in dataService.Schemas.SelectMany(s => s.Objects)) { session["CurrentObject"] = domainObject; ModelTemplate modelTemplate = new ModelTemplate(); modelTemplate.Session = session; modelTemplate.Initialize(); content = modelTemplate.TransformText(); File.WriteAllText(Path.Combine(modelsFolder, $"{domainObject.ObjectName}.cs"), content); MetadataTemplate metadataTemplate = new MetadataTemplate(); metadataTemplate.Session = session; metadataTemplate.Initialize(); content = metadataTemplate.TransformText(); File.WriteAllText(Path.Combine(metadataFolder, $"{domainObject.ObjectName}Metadata.cs"), content); } } MetadataBundleTemplate bundleTemplate = new MetadataBundleTemplate(); bundleTemplate.Session = session; bundleTemplate.Initialize(); content = bundleTemplate.TransformText(); File.WriteAllText(Path.Combine(metadataFolder, $"{dataService.Name}MetadataBundle.cs"), content); }
public void RenderEntityFile(List <EntityModel> models) { if (!Directory.Exists(_outputPath + "Entity\\" + NormalizeTableName + "\\")) { Directory.CreateDirectory(_outputPath + "Entity\\" + NormalizeTableName + "\\"); } var entityOutputPath = _outputPath + "Entity\\" + NormalizeTableName + "\\" + NormalizeTableName + "Entity.cs"; var modelTemplate = new ModelTemplate(models, NormalizeTableName, _projectName); var output = modelTemplate.TransformText(); File.WriteAllText(entityOutputPath, output); }
public static void Generate(ReaderParameters readerParameters) { using (var schemaReader = SchemaReaderProvider.GetReader(readerParameters.ServerType)) { var connectionString = readerParameters.ConnectionString; if (readerParameters.UseConnectionStringName) { connectionString = ConfigurationManager.ConnectionStrings[readerParameters.ConnectionStringName].ConnectionString; } if (schemaReader == null || string.IsNullOrEmpty(connectionString)) { throw new Exception("Schema reader object or connection ring not valid!"); } if (string.IsNullOrEmpty(readerParameters.Namespace)) { readerParameters.Namespace = readerParameters.ServerType.ToString() + ".Models"; } if (string.IsNullOrEmpty(readerParameters.ModelsLocation)) { readerParameters.ModelsLocation = readerParameters.ServerType.ToString() + ".Models"; } var tables = schemaReader.ReadSchema(connectionString); foreach (var table in tables) { var model = new ModelTemplate(); model.Namespace = readerParameters.Namespace; model.IncludeRelationships = readerParameters.IncludeRelationships; model.Table = table; model.Tables = tables; // get page content string pageContent = model.TransformText(); if (!Directory.Exists(readerParameters.ModelsLocation)) { Directory.CreateDirectory(readerParameters.ModelsLocation); } // Write model to file string fileName = table.ClassName + ".cs"; Console.WriteLine(string.Format("Creating file {0} ...", fileName)); File.WriteAllText(Path.Combine(readerParameters.ModelsLocation, fileName), pageContent); } } }
public static Task <GeneratePocoResponse> Generate(GeneratePocoRequest request) { return(Task.Run(() => { using (var schemaReader = SchemaReaderProvider.GetReader(request.ServerType)) { var connectionString = request.ConnectionString; if (schemaReader == null || string.IsNullOrEmpty(connectionString)) { return new GeneratePocoResponse(); } var tables = schemaReader.ReadSchema(connectionString); if (tables == null || tables.Count <= 0) { throw new Exception(string.Format("Empty database or invalid connection string: {0}", connectionString)); } var fileNames = new List <string>(); foreach (var table in tables) { var model = new ModelTemplate(); model.Namespace = request.Namespace; model.IncludeRelationships = request.IncludeRelationship; model.Table = table; model.Tables = tables; // get page content string pageContent = model.TransformText(); if (!Directory.Exists(request.FolderLocation)) { Directory.CreateDirectory(request.FolderLocation); } // Write model to file string fileName = table.ClassName + ".cs"; File.WriteAllText(Path.Combine(request.FolderLocation, fileName), pageContent); fileNames.Add(fileName); } var response = new GeneratePocoResponse(); response.Filenames = fileNames; return response; } })); }
public void CreateModelsTest() { using (var schemaReader = SchemaReaderProvider.GetReader(DbServerType.MsSql)) { Tables tables = schemaReader.ReadSchema(_connectionString); Assert.NotNull(schemaReader); Assert.NotNull(tables); var fileFullPathList = new List <string>(); foreach (var table in tables) { var model = new ModelTemplate(); model.Namespace = Namespace; model.IncludeRelationships = true; model.Table = table; model.Tables = tables; // get page content string pageContent = model.TransformText(); // your generated model files go here string modelsPath = Namespace; if (!Directory.Exists(modelsPath)) { Directory.CreateDirectory(modelsPath); } // Write model to file string fileFullPath = string.Format("{0}\\{1}", modelsPath, table.ClassName) + ".cs"; File.WriteAllText(fileFullPath, pageContent); fileFullPathList.Add(fileFullPath); } // Check if files exits Assert.Equal(tables.Count, fileFullPathList.Count); foreach (var fileFullpath in fileFullPathList) { Assert.True(File.Exists(fileFullpath)); } } }
static void Main(string[] args) { using (var schemaReader = SchemaReaderProvider.GetReader(DbServerType.MySql)) { var connectionString = ConfigurationManager.ConnectionStrings["MySqlSugarCrmConnectionString"].ConnectionString; if (schemaReader == null || string.IsNullOrEmpty(connectionString)) { // return new GeneratePocoResponse(); } var tables = schemaReader.ReadSchema(connectionString); if (tables == null || tables.Count <= 0) { throw new Exception(string.Format("Empty database or invalid connection string: {0}", connectionString)); } var fileNames = new List <string>(); foreach (var table in tables) { var model = new ModelTemplate(); model.Namespace = "Sugar.PocoGen.Console.Models"; model.IncludeRelationships = true; model.Table = table; model.Tables = tables; // get page content string pageContent = model.TransformText(); string folder = "Models"; if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } // Write model to file string fileName = table.ClassName + ".cs"; File.WriteAllText(Path.Combine(folder, fileName), pageContent); fileNames.Add(fileName); } } }
public static void GenerateModel(GeneratorParameters.GeneratorParameters generatorParameters) { ModelTemplate template = new ModelTemplate { //Create our session. Session = new Dictionary <string, object>() }; template.Session["ClassName"] = generatorParameters.Model.Name; template.Session["Namespace"] = generatorParameters.NamespaceName; template.Session["Extends"] = generatorParameters.Model.Extends; template.Session["BaseNamespace"] = generatorParameters.Model.BaseNamespace; template.Session["Fields"] = generatorParameters.Model.Fields; template.Initialize(); string classDef = template.TransformText(); File.WriteAllText($"{generatorParameters.OutputDir}/{generatorParameters.Model.Name}.cs", classDef); }
public static void GenerateDataAccess(string tableName) { var fieldList = generateDal.GetFieldList(tableName); var tableModel = generateDal.GetTableList().Single(o => o.Name == tableName); ModelTemplate modelTemplate = new ModelTemplate(fieldList, tableModel); String contentModel = modelTemplate.TransformText(); System.IO.File.WriteAllText(Utility.FileHelper.PathExists(Config.BusinessEntitiesPath, tableName, Enums.GenerateType.Model), contentModel, Encoding.UTF8); DataAccessTemplate dataAccessTemplate = new DataAccessTemplate(fieldList, tableModel); String contentDataAccess = dataAccessTemplate.TransformText(); System.IO.File.WriteAllText(Utility.FileHelper.PathExists(Config.DataAccessPath, tableName, Enums.GenerateType.DataAccess), contentDataAccess, Encoding.UTF8); LogicTemplate logicTemplate = new LogicTemplate(fieldList, tableModel); String contentLogic = logicTemplate.TransformText(); System.IO.File.WriteAllText(Utility.FileHelper.PathExists(Config.BusinessLogicPath, tableName, Enums.GenerateType.Logic), contentLogic, Encoding.UTF8); //业务逻辑层接口 if (Utility.Config.IBusinessLogicEnable == true) { IDataAccessTemplate idataAccessTemplate = new IDataAccessTemplate(fieldList, tableModel); String icontentDataAccess = idataAccessTemplate.TransformText(); System.IO.File.WriteAllText(Utility.FileHelper.PathExists(Config.IDataAccessPath, "I" + tableName, Enums.GenerateType.DataAccess), icontentDataAccess, Encoding.UTF8); } //数据访问层接口 if (Utility.Config.IDataAccessEnable == true) { ILogicTemplate ilogicTemplate = new ILogicTemplate(fieldList, tableModel); String icontentLogic = ilogicTemplate.TransformText(); System.IO.File.WriteAllText(Utility.FileHelper.PathExists(Config.IBusinessLogicPath, "I" + tableName, Enums.GenerateType.Logic), icontentLogic, Encoding.UTF8); } }
private void CreateModelFile(ModelTemplate model) { outPutFile("Common\\Models", model.ModelClassName + ".cs", model.TransformText()); }
static void Main(string[] args) { string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location).Replace("\\bin\\Debug", "").Replace("\\bin", ""); string path = Path.Combine(dir, "data.xml"); string dataProjectDir = dir.Replace(".T4", ".Data"); string webProjectDir = dir.Replace(".T4", ".Admin"); string clientProjectDir = dir.Replace(".T4", ""); DatabaseInfo databaseInfo = new DatabaseInfo(); var serializer = new XmlSerializer(databaseInfo.GetType()); using (StreamReader reader = new StreamReader(path)) { databaseInfo = (DatabaseInfo)serializer.Deserialize(reader); } foreach (ModelInfo model in databaseInfo.Models) { //preparing FK collection names model.CollectionModel = databaseInfo.Models.Where(m => m.Fields.Any(f => f.FkSingular == model.Singular)).ToList(); //angular project //AngularControllerTemplate acTemplate = new AngularControllerTemplate(); //acTemplate.Model = model; //string acContent = acTemplate.TransformText(); //File.WriteAllText(Path.Combine(clientProjectDir, "Scripts\\modules\\stolarus\\controllers", model.Plural.ToLower() + ".js"), acContent); //AngularItemTemplate aiTemplate = new AngularItemTemplate(); //aiTemplate.Model = model; //string aiContent = aiTemplate.TransformText(); //File.WriteAllText(Path.Combine(clientProjectDir, "WebPages", model.Singular + "ListItem.html"), aiContent); //data project ModelTemplate modelTemplate = new ModelTemplate(); modelTemplate.Model = model; modelTemplate.RootNamespace = databaseInfo.RootNamespace; string modelContent = modelTemplate.TransformText(); File.WriteAllText(Path.Combine(dataProjectDir, "Models", model.Singular + ".cs"), modelContent); MappingTemplate mapTemplate = new MappingTemplate(); mapTemplate.Model = model; mapTemplate.RootNamespace = databaseInfo.RootNamespace; string mapContent = mapTemplate.TransformText(); File.WriteAllText(Path.Combine(dataProjectDir, "Models\\Mapping", model.Singular + "Map.cs"), mapContent); RepositoryTemplate repositoryTemplate = new RepositoryTemplate(); repositoryTemplate.Model = model; repositoryTemplate.RootNamespace = databaseInfo.RootNamespace; string repositoryContent = repositoryTemplate.TransformText(); File.WriteAllText(Path.Combine(dataProjectDir, "Repository", model.Plural + "Repository.cs"), repositoryContent); ContractTemplate contractTemplate = new ContractTemplate(); contractTemplate.Model = model; contractTemplate.RootNamespace = databaseInfo.RootNamespace; string contractContent = contractTemplate.TransformText(); File.WriteAllText(Path.Combine(dataProjectDir, "Contracts", "I" + model.Plural + "Repository.cs"), contractContent); //web project //ModelBinderTemplate modelBinderTemplate = new ModelBinderTemplate(); //modelBinderTemplate.Model = model; //modelBinderTemplate.RootNamespace = databaseInfo.RootNamespace; //string modelBinderContent = modelBinderTemplate.TransformText(); //File.WriteAllText(Path.Combine(webProjectDir, "ModelBinding", model.Plural + "FilterModelBinder.cs"), modelBinderContent); //ControllerTemplate controllerTemplate = new ControllerTemplate(); //controllerTemplate.Model = model; //controllerTemplate.RootNamespace = databaseInfo.RootNamespace; //string controllerContent = controllerTemplate.TransformText(); //File.WriteAllText(Path.Combine(webProjectDir, "Controllers", model.Plural + "Controller.cs"), controllerContent); //EditorTemplate editorTemplate = new EditorTemplate(); //editorTemplate.Model = model; //editorTemplate.RootNamespace = databaseInfo.RootNamespace; //string editorContent = editorTemplate.TransformText(); //File.WriteAllText(Path.Combine(webProjectDir, "Views\\Shared\\EditorTemplates", "_" + model.Singular + ".cshtml"), editorContent); ////client web project //ApiControllerTemplate apiControllerTemplate = new ApiControllerTemplate(); //apiControllerTemplate.Model = model; //apiControllerTemplate.RootNamespace = databaseInfo.RootNamespace; //string apiControllerContent = apiControllerTemplate.TransformText(); //File.WriteAllText(Path.Combine(clientProjectDir, "Controllers\\Api", model.Plural + "Controller.cs"), apiControllerContent); } //ContextTemplate contextTemplate = new ContextTemplate(); //contextTemplate.RootNamespace = databaseInfo.RootNamespace; //contextTemplate.Models = databaseInfo.Models; //string contextContent = contextTemplate.TransformText(); //File.WriteAllText(Path.Combine(dataProjectDir, "Models", databaseInfo.RootNamespace + "Context.cs"), contextContent); //RegisterModelBindersTemplate registerModelBindersTemplate = new RegisterModelBindersTemplate(); //registerModelBindersTemplate.Models = databaseInfo.Models; //registerModelBindersTemplate.RootNamespace = databaseInfo.RootNamespace; //string registerModelBindersContent = registerModelBindersTemplate.TransformText(); //File.WriteAllText(Path.Combine(webProjectDir, "App_Start", "ModelBindersConfig.cs"), registerModelBindersContent); //RegisterUnityTemplate registerUnityTemplate1 = new RegisterUnityTemplate(); //registerUnityTemplate1.RootNamespace = databaseInfo.RootNamespace + ".Admin"; //registerUnityTemplate1.Models = databaseInfo.Models; //string registerUnityContent1 = registerUnityTemplate1.TransformText(); //File.WriteAllText(Path.Combine(webProjectDir, "App_Start", "UnityConfig.custom.cs"), registerUnityContent1); //RegisterUnityTemplate registerUnityTemplate2 = new RegisterUnityTemplate(); //registerUnityTemplate2.RootNamespace = databaseInfo.RootNamespace; //registerUnityTemplate2.Models = databaseInfo.Models; //string registerUnityContent2 = registerUnityTemplate2.TransformText(); //File.WriteAllText(Path.Combine(clientProjectDir, "App_Start", "UnityConfig.custom.cs"), registerUnityContent2); //MiscTemplate miscTemplate = new MiscTemplate(); //miscTemplate.Models = databaseInfo.Models; //string miscContent = miscTemplate.TransformText(); //File.WriteAllText(Path.Combine(webProjectDir, "Misc.txt"), miscContent); }