/// <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)); }
/// <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); }