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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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));
                }
            }
        }
示例#7
0
        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);
            }
        }
示例#10
0
 private void CreateModelFile(ModelTemplate model)
 {
     outPutFile("Common\\Models", model.ModelClassName + ".cs", model.TransformText());
 }
示例#11
0
        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);
        }