예제 #1
0
        private void ValidateArgs(string[] p)
        {
            if (p.Length == 0)
            {
                ShowOption();
            }
            else
            {
                if (p[0] == "list")
                {
                    ShowOption();
                }

                if (p[0] == "init")
                {
                    InitDal(p);
                }

                if (p[0] == "generate")
                {
                    GenDal(p);
                }

                if (p[0] == "updateSettings")
                {
                    UpdateDal(p);
                }

                if (p[0] == "updateDALFiles")
                {
                    var dal = new DalGenerator();
                    dal.SaveChanges();
                }
            }
        }
예제 #2
0
        private void InitDal(string[] p)
        {
            if (p.Length < 3)
            {
                Console.WriteLine("Project name is required");
            }
            else
            {
                GenerateSettings m = new GenerateSettings
                {
                    AuthorName          = "",
                    CoreSdkVer          = "2.1.604",
                    SolutionName        = p[2] + @".sln",
                    BaseDirectory       = System.IO.Directory.GetCurrentDirectory(),
                    CompanyName         = "",
                    CopyRight           = " 2019",
                    DalSpaceName        = p[2] + ".Business",
                    DalPackages         = new System.Collections.Generic.List <string>(),
                    DalRefferences      = new System.Collections.Generic.List <string>(),
                    ModelNames          = new List <string>(),
                    DataFileName        = System.IO.Directory.GetCurrentDirectory() + @"\" + p[2] + @"\" + p[2] + @".Data\bin\Release\netstandard2.0\" + p[2] + ".Data.dll",
                    DbContextName       = p[2] + "DbContext",
                    DevConnectionString = "DevConnection",

                    ModelSpaceName    = p[2] + ".data",
                    ProjectName       = p[2],
                    WebApiCreation    = false,
                    WebApiFolder      = p[2] + ".WebApi",
                    WebApiPackages    = new System.Collections.Generic.List <string>(),
                    WebApiRefferences = new System.Collections.Generic.List <string>(),
                    SDKCreation       = false,
                    SDKFolder         = p[2] + ".SDK",
                    SDKPackages       = new System.Collections.Generic.List <string>(),
                    SDKRefferences    = new System.Collections.Generic.List <string>(),
                    WebCreation       = false,
                    WebFolder         = p[2] + ".Web",
                    WebPackages       = new System.Collections.Generic.List <string>(),
                    WebRefferences    = new System.Collections.Generic.List <string>()
                };



                m.DalRefferences.Add(System.IO.Directory.GetCurrentDirectory() + @"\" + p[2] + @"\" + p[2] + @".Data\" + p[2] + @".Data.csproj");
                m.DalPackages.Add(@"Microsoft.EntityFrameworkCore ");
                m.DalPackages.Add(@"Newtonsoft.Json ");

                m.WebApiRefferences.Add(System.IO.Directory.GetCurrentDirectory() + @"\" + p[2] + @"\" + p[2] + @".Business\" + p[2] + @".Business.csproj");
                m.WebApiRefferences.Add(System.IO.Directory.GetCurrentDirectory() + @"\" + p[2] + @"\" + p[2] + @".Data\" + p[2] + @".Data.csproj");

                m.WebApiPackages.Add(@"Microsoft.EntityFrameworkCore ");
                m.WebApiPackages.Add(@"Newtonsoft.Json ");

                System.IO.File.WriteAllText(System.IO.Directory.GetCurrentDirectory() + @"\FrameworkSettings.json", Newtonsoft.Json.JsonConvert.SerializeObject(m));

                var db = new DalGenerator();
                db.InitFiles();
            }
        }
예제 #3
0
        public void CodeGenerateOneView(string pViewName, string pSchemaName)
        {
            TypeLibraryGenerator typeGen = new TypeLibraryGenerator(this);
            DalGenerator         dalGen  = this.DalGenerator;
            BsGenerator          bsGen   = new BsGenerator(this);

            IView view = GetView(pViewName, pSchemaName);


            typeGen.Render(Output, view, UseSchemaNameInSqlQueries, UseSchemaNameInFolders, ListDatabaseAbbreviations);
            dalGen.Render(Output, view, UseSchemaNameInSqlQueries, UseSchemaNameInFolders, ListDatabaseAbbreviations);
            bsGen.Render(Output, view, UseSchemaNameInSqlQueries, UseSchemaNameInFolders, ListDatabaseAbbreviations);
        }
예제 #4
0
        public void CodeGenerateOneTable(string pTableName, string pSchemaName)
        {
            // TODO ignore table name suffix . Make this generic
            if (pTableName.StartsWith("sqlite_"))
            {
                return;
            }

            TypeLibraryGenerator typeGen = this.TypeLibraryGenerator;
            DalGenerator         dalGen  = this.DalGenerator;
            BsGenerator          bsGen   = new BsGenerator(this);

            ITable table = this.getTable(pTableName, pSchemaName);


            typeGen.Render(Output, table, UseSchemaNameInSqlQueries, UseSchemaNameInFolders, ListDatabaseAbbreviations);
            dalGen.Render(Output, table, UseSchemaNameInSqlQueries, UseSchemaNameInFolders, ListDatabaseAbbreviations);
            bsGen.Render(Output, table, UseSchemaNameInSqlQueries, UseSchemaNameInFolders, ListDatabaseAbbreviations);
        }
예제 #5
0
        protected override void OnHandler(ParameterHandlerInfo info)
        {
            Core.Log.Warning("Starting Dal Generator Test");

            var folder           = "./Data";
            var connectionString =
                "Data Source=10.10.1.21;Initial Catalog=AGSW_MIDDLE;User Id=sa;Password=genesis;Pooling=True";
            //"Data Source=10.10.1.50;Initial Catalog=MRFLY_MIDDLE;User Id=MRFLY_SVC;Password=mISTERfLY13;Pooling=True";

            var ssda = new SqlServerDataAccess(connectionString, DataAccessType.Query);

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            Core.Log.InfoBasic("Getting Schema");
            var schema = ssda.GetSchema();

            schema.SerializeToXmlFile(Path.Combine(folder, "dbSchema.xml"));

            Core.Log.InfoBasic("Creating Generator");

            var dGen = new DalGenerator(schema, "Agsw.Travel.Data")
            {
                GetEntityNameDelegate = name =>
                {
                    name = name.Replace("_", " ");
                    name = name.Substring(0, 3) + name.Substring(4).CapitalizeEachWords();
                    name = name.Replace("-", "_");
                    return(name.RemoveSpaces());
                },
                GeneratorType = DalGeneratorType.StoredProcedure
            };


            Core.Log.InfoBasic("Generating SQLServer Dal: {0}", folder);
            dGen.Create(folder);

            Core.Log.InfoBasic("Generating PostgreSQL Dal: {0}", folder);
            var connectionString2 = "Server=10.10.1.50;Port=5432;Database=FLY_MIDDLE;User Id=postgres;Password=genesis;";
            var pdal = new PostgreSQLDataAccess(connectionString2, DataAccessType.Query);


            var postgresSchema = pdal.GetSchema();

            dGen.Create(folder, pdal);


            Core.Log.InfoBasic("Generating MySql Dal: {0}", folder);
            var connectionString3 = "MySqlConnString";
            var sdal = new MySqlDataAccess(connectionString3, DataAccessType.Query);

            dGen.Create(folder, sdal);


            Core.Log.InfoBasic("Generating Sqlite Dal: {0}", folder);
            var connectionString4 = "SqliteConnString";
            var sldal             = new SQLiteDataAccess(connectionString4);

            dGen.Create(folder, sldal);
        }
예제 #6
0
        /// <summary>
        /// 点击“批量生成按钮” =》 批量生成 Model、DAL、数据库结构表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void generate_button_Click(object sender, EventArgs e)
        {
            //1. 判断是否选择了表
            if (Right_listBox.Items.Count <= 0)
            {
                MessageBox.Show("请选择要生成的表!");
                return;
            }

            //2. 判断要生成的路径是否为空
            string outputPath = path_textBox.Text.Trim();

            if (outputPath.ToString() == "")
            {
                //如果是空值,则给一个默认路径
                outputPath        = "\\\\Mac\\Home\\Desktop";
                path_textBox.Text = outputPath;
            }

            //3. 判断要生成的路径是否存在
            if (!Directory.Exists(outputPath))
            {
                try
                {
                    //如果路径不存在,则自动生成路径
                    Directory.CreateDirectory(outputPath);
                }
                catch (Exception)
                {
                    //出错
                    MessageBox.Show("路径不存在!请选择正确的生成目录!");
                    return;
                }
            }

            //4. 判断命名空间是否为空
            if (namespace_textBox.Text.Trim().ToString() == "")
            {
                MessageBox.Show("请输入命名空间!");
                return;
            }

            //5. 获取基本信息
            string connStr     = getConnstr();
            string tablePrefix = table_prefix_textBox.Text.Trim();
            string author      = author_textBox.Text.Trim();
            string ns          = namespace_textBox.Text.Trim();
            string dbName      = DB_name_textBox.Text.Trim();

            //6. 生成 Model
            ModelGenerator.GenerateModel(ns, author, outputPath, tablePrefix, connStr, Right_listBox.Items);
            //7. 生成 DAL
            DalGenerator.GenerateDAL(ns, author, outputPath, tablePrefix, connStr, Right_listBox.Items);
            //8. 生成数据库操作助手类
            MSSQLHelperGenerator.GenerateMSSQLHelper(ns, outputPath, connStr);
            //9. 生成 数据库文档
            SqlFileGenerator.GenerateSqlFile(outputPath, connStr, listRight, dbName);


            //10. 告知生成成功
            string successMsg = "恭喜你!生成成功!";

            MessageBox.Show(successMsg);

            //11. 打开生成后的目录
            System.Diagnostics.Process.Start(outputPath);
        }