Ejemplo n.º 1
0
        /// <summary>
        /// 匹配模板并转换
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public string EnChange(string namespaces, string tbname, List <TableProperModel> list)
        {
            if (!(list is null))
            {
                //类名
                string classname = tbname.ToUpper();
                //属性值
                string propertys = "";
                foreach (var item in list)
                {
                    switch (item.DATA_TYPE.ToLower())
                    {
                    case "integer":
                    case "int": propertys += string.Format("public {0} {1} {{get;set;}}", "int", item.COLUMN_NAME.ToUpper()); break;

                    case "text":
                    case "nvarchar":
                    case "ntext":
                    case "nchar":
                    case "varchar": propertys += string.Format("public {0} {1} {{get;set;}}", "string", item.COLUMN_NAME.ToUpper()); break;

                    case "double": propertys += string.Format("public {0} {1} {{get;set;}}", "double", item.COLUMN_NAME.ToUpper()); break;

                    case "float": propertys += string.Format("public {0} {1} {{get;set;}}", "float", item.COLUMN_NAME.ToUpper()); break;

                    case "bit": propertys += string.Format("public {0} {1} {{get;set;}}", "bool", item.COLUMN_NAME.ToUpper()); break;

                    case "datetime": propertys += string.Format("public {0} {1} {{get;set;}}", "DateTime", item.COLUMN_NAME.ToUpper()); break;

                    case "numeric":
                    case "decimal": propertys += string.Format("public {0} {1} {{get;set;}}", "decimal", item.COLUMN_NAME.ToUpper()); break;

                    case "date": propertys += string.Format("public {0} {1} {{get;set;}}", "DateTime", item.COLUMN_NAME.ToUpper()); break;

                    case "char": propertys += string.Format("public {0} {1} {{get;set;}}", "char", item.COLUMN_NAME.ToUpper()); break;

                    case "smallint": propertys += string.Format("public {0} {1} {{get;set;}}", "short", item.COLUMN_NAME.ToUpper()); break;

                    case "bigint": propertys += string.Format("public {0} {1} {{get;set;}}", "long", item.COLUMN_NAME.ToUpper()); break;

                    case "tinyint": propertys += string.Format("public {0} {1} {{get;set;}}", "byte", item.COLUMN_NAME.ToUpper()); break;

                    default:
                        break;
                    }
                    propertys += "\r\n";
                }
                //读取模板并替换其中的参数
                FileROWUtil row     = new FileROWUtil();
                string      readstr = row.Read(System.AppDomain.CurrentDomain.BaseDirectory + "/Template.txt");
                return(readstr.Replace("@namespace", namespaces).Replace("@classname", classname).Replace("@propertys", propertys));
            }
Ejemplo n.º 2
0
        /// <summary>
        /// 打开数据库并生成model
        /// </summary>
        /// <param name="conn"></param>
        private void Generator(DbConnection conn)
        {
            string    db      = cbdb.Text;
            string    sql     = $"use {db};show tables;";
            DbCommand command = new MySqlCommand(sql);

            command.Connection = conn;
            conn.Open();
            DbDataReader  reader  = command.ExecuteReader();
            List <string> tbnames = new List <string>();

            while (reader.Read())
            {
                //lblstatus.Text += reader[0].ToString();
                tbnames.Add(reader[0].ToString());
            }
            lblstatus.Text = $"共有{tbnames.Count}张表。";
            reader.Close();
            int i = 0;
            MysqlTypeChangesUtil typeChanges = new MysqlTypeChangesUtil();

            foreach (var tbname in tbnames)
            {
                lblstatus.Text = $"共有{tbnames.Count}张表。正在生成第{i++}张表。。。";
                var         list        = readtable(command, tbname);
                string      enchangetxt = typeChanges.EnChange(txtnamespace.Text.Trim(), tbname, list);
                FileROWUtil row         = new FileROWUtil();
                bool        bres        = row.Write(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/CodeGenerator/", enchangetxt, tbname);
                if (bres)
                {
                    continue;
                }
                else
                {
                    lblstatus.Text = "出现异常!";
                    return;
                }
            }
            lblstatus.Text = $"已生成{tbnames.Count}张表。";
            //MessageBox.Show(lblstatus.Text);
        }