diff --git a/DatabasetoEntityclass/Class1.cs b/DatabasetoEntityclass/Class1.cs
deleted file mode 100644
index 674e89e..0000000
--- a/DatabasetoEntityclass/Class1.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WindowsFormsApp1
-{
- internal class Class1
- {
-
- }
-}
diff --git a/DatabasetoEntityclass/DatabasetoEntityclass.csproj b/DatabasetoEntityclass/DatabasetoEntityclass.csproj
index c2fb37d..241459d 100644
--- a/DatabasetoEntityclass/DatabasetoEntityclass.csproj
+++ b/DatabasetoEntityclass/DatabasetoEntityclass.csproj
@@ -6,8 +6,8 @@
AnyCPU
{7D7B530A-23A4-4024-B263-A942AA53DCC5}
WinExe
- WindowsFormsApp1
- WindowsFormsApp1
+ GenerateClass
+ GenerateClass
v4.7.2
512
true
@@ -39,6 +39,9 @@
..\packages\Google.Protobuf.3.21.9\lib\net45\Google.Protobuf.dll
+
+ ..\packages\JinianNet.JNTemplate.2.3.3\lib\net46\JinianNet.JNTemplate.dll
+
..\packages\K4os.Compression.LZ4.1.3.5\lib\net462\K4os.Compression.LZ4.dll
@@ -86,8 +89,8 @@
-
-
+
+
Form
@@ -96,6 +99,8 @@
+
+
Form1.cs
@@ -107,6 +112,7 @@
True
Resources.resx
+ True
@@ -118,6 +124,18 @@
Settings.settings
True
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
diff --git a/DatabasetoEntityclass/Form1.Designer.cs b/DatabasetoEntityclass/Form1.Designer.cs
index bcc6d58..ff79308 100644
--- a/DatabasetoEntityclass/Form1.Designer.cs
+++ b/DatabasetoEntityclass/Form1.Designer.cs
@@ -1,4 +1,4 @@
-namespace WindowsFormsApp1
+namespace GenerateClass
{
partial class Form1
{
@@ -28,7 +28,7 @@
///
private void InitializeComponent()
{
- this.button1 = new System.Windows.Forms.Button();
+ this.modelGen = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.txt_ret = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
@@ -44,22 +44,24 @@
this.button4 = new System.Windows.Forms.Button();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
+ this.isGenOperationColumn = new System.Windows.Forms.CheckBox();
+ this.label6 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
- // button1
+ // modelGen
//
- this.button1.Location = new System.Drawing.Point(81, 322);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(75, 23);
- this.button1.TabIndex = 0;
- this.button1.Text = "开始";
- this.button1.UseVisualStyleBackColor = true;
- this.button1.Click += new System.EventHandler(this.button1_Click);
+ this.modelGen.Location = new System.Drawing.Point(105, 322);
+ this.modelGen.Name = "modelGen";
+ this.modelGen.Size = new System.Drawing.Size(75, 23);
+ this.modelGen.TabIndex = 0;
+ this.modelGen.Text = "开始";
+ this.modelGen.UseVisualStyleBackColor = true;
+ this.modelGen.Click += new System.EventHandler(this.modelGen_Click);
//
// label2
//
this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(296, 16);
+ this.label2.Location = new System.Drawing.Point(357, 16);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(41, 12);
this.label2.TabIndex = 4;
@@ -68,16 +70,17 @@
// txt_ret
//
this.txt_ret.Font = new System.Drawing.Font("宋体", 11F);
- this.txt_ret.Location = new System.Drawing.Point(453, 61);
+ this.txt_ret.Location = new System.Drawing.Point(518, 61);
this.txt_ret.Multiline = true;
this.txt_ret.Name = "txt_ret";
+ this.txt_ret.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.txt_ret.Size = new System.Drawing.Size(335, 341);
this.txt_ret.TabIndex = 68;
//
// label3
//
this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(453, 43);
+ this.label3.Location = new System.Drawing.Point(515, 43);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(53, 12);
this.label3.TabIndex = 69;
@@ -85,16 +88,16 @@
//
// namespace_name
//
- this.namespace_name.Location = new System.Drawing.Point(131, 86);
+ this.namespace_name.Location = new System.Drawing.Point(118, 86);
this.namespace_name.Name = "namespace_name";
- this.namespace_name.Size = new System.Drawing.Size(218, 21);
+ this.namespace_name.Size = new System.Drawing.Size(353, 21);
this.namespace_name.TabIndex = 70;
this.namespace_name.Text = "default_namespace";
//
// lable2
//
this.lable2.AutoSize = true;
- this.lable2.Location = new System.Drawing.Point(67, 91);
+ this.lable2.Location = new System.Drawing.Point(54, 91);
this.lable2.Name = "lable2";
this.lable2.Size = new System.Drawing.Size(59, 12);
this.lable2.TabIndex = 71;
@@ -103,25 +106,25 @@
// txt_tablename
//
this.txt_tablename.FormattingEnabled = true;
- this.txt_tablename.Location = new System.Drawing.Point(343, 12);
+ this.txt_tablename.Location = new System.Drawing.Point(404, 12);
this.txt_tablename.Name = "txt_tablename";
this.txt_tablename.Size = new System.Drawing.Size(218, 20);
this.txt_tablename.TabIndex = 72;
this.txt_tablename.Text = "请选择";
- this.txt_tablename.TextUpdate += new System.EventHandler(this.orderId_TextUpdate);
//
// textBox1
//
this.textBox1.Font = new System.Drawing.Font("宋体", 11F);
- this.textBox1.Location = new System.Drawing.Point(455, 425);
+ this.textBox1.Location = new System.Drawing.Point(517, 425);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
+ this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.textBox1.Size = new System.Drawing.Size(335, 341);
this.textBox1.TabIndex = 73;
//
// textBox2
//
- this.textBox2.Location = new System.Drawing.Point(142, 469);
+ this.textBox2.Location = new System.Drawing.Point(164, 469);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(218, 21);
this.textBox2.TabIndex = 74;
@@ -130,7 +133,7 @@
// label1
//
this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(70, 472);
+ this.label1.Location = new System.Drawing.Point(92, 472);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(65, 12);
this.label1.TabIndex = 75;
@@ -138,18 +141,18 @@
//
// button2
//
- this.button2.Location = new System.Drawing.Point(69, 630);
+ this.button2.Location = new System.Drawing.Point(91, 630);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 76;
this.button2.Text = "生成1";
this.button2.UseVisualStyleBackColor = true;
- this.button2.Click += new System.EventHandler(this.button2_Click);
+ this.button2.Click += new System.EventHandler(this.dgvGen1_Click);
//
// label4
//
this.label4.AutoSize = true;
- this.label4.Location = new System.Drawing.Point(25, 405);
+ this.label4.Location = new System.Drawing.Point(87, 405);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(827, 12);
this.label4.TabIndex = 77;
@@ -158,27 +161,27 @@
//
// button3
//
- this.button3.Location = new System.Drawing.Point(176, 630);
+ this.button3.Location = new System.Drawing.Point(198, 630);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(75, 23);
this.button3.TabIndex = 78;
this.button3.Text = "生成2";
this.button3.UseVisualStyleBackColor = true;
- this.button3.Click += new System.EventHandler(this.button3_Click);
+ this.button3.Click += new System.EventHandler(this.dgvGen2_Click);
//
// button4
//
- this.button4.Location = new System.Drawing.Point(285, 630);
+ this.button4.Location = new System.Drawing.Point(307, 630);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(75, 23);
this.button4.TabIndex = 79;
this.button4.Text = "生成3";
this.button4.UseVisualStyleBackColor = true;
- this.button4.Click += new System.EventHandler(this.button4_Click);
+ this.button4.Click += new System.EventHandler(this.dgvGen3_Click);
//
// textBox3
//
- this.textBox3.Location = new System.Drawing.Point(858, 344);
+ this.textBox3.Location = new System.Drawing.Point(920, 344);
this.textBox3.Multiline = true;
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(98, 131);
@@ -187,17 +190,37 @@
// label5
//
this.label5.AutoSize = true;
- this.label5.Location = new System.Drawing.Point(840, 322);
+ this.label5.Location = new System.Drawing.Point(902, 322);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(137, 12);
this.label5.TabIndex = 81;
this.label5.Text = "查询字段sql自定义,可空";
//
+ // isGenOperationColumn
+ //
+ this.isGenOperationColumn.AutoSize = true;
+ this.isGenOperationColumn.Location = new System.Drawing.Point(256, 538);
+ this.isGenOperationColumn.Name = "isGenOperationColumn";
+ this.isGenOperationColumn.Size = new System.Drawing.Size(15, 14);
+ this.isGenOperationColumn.TabIndex = 82;
+ this.isGenOperationColumn.UseVisualStyleBackColor = true;
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(89, 538);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(161, 12);
+ this.label6.TabIndex = 83;
+ this.label6.Text = "是否生成操作列(生成2和3):";
+ //
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1084, 778);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.isGenOperationColumn);
this.Controls.Add(this.label5);
this.Controls.Add(this.textBox3);
this.Controls.Add(this.button4);
@@ -213,7 +236,7 @@
this.Controls.Add(this.label3);
this.Controls.Add(this.txt_ret);
this.Controls.Add(this.label2);
- this.Controls.Add(this.button1);
+ this.Controls.Add(this.modelGen);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
@@ -224,7 +247,7 @@
#endregion
- private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button modelGen;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txt_ret;
private System.Windows.Forms.Label label3;
@@ -240,6 +263,8 @@
private System.Windows.Forms.Button button4;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.CheckBox isGenOperationColumn;
+ private System.Windows.Forms.Label label6;
}
}
diff --git a/DatabasetoEntityclass/Form1.cs b/DatabasetoEntityclass/Form1.cs
index 38e7114..f625df6 100644
--- a/DatabasetoEntityclass/Form1.cs
+++ b/DatabasetoEntityclass/Form1.cs
@@ -1,19 +1,11 @@
using System;
-using System.Collections;
using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Data.SqlTypes;
-using System.Drawing;
-using System.Globalization;
using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Windows.Forms;
-using static System.Windows.Forms.VisualStyles.VisualStyleElement;
+using GenerateClass.Util;
+using JinianNet.JNTemplate;
-namespace WindowsFormsApp1
+namespace GenerateClass
{
public partial class Form1 : Form
{
@@ -21,402 +13,121 @@ namespace WindowsFormsApp1
{
InitializeComponent();
}
- string folderName = "GenFolder"; // 文件夹名称
private void Form1_Load(object sender, EventArgs e)
{
- this.txt_tablename.Items.AddRange(GetTableName().ToArray());
+ this.txt_tablename.Items.AddRange(DbUtil.GetTableName().ToArray());
+ this.txt_tablename.TextUpdate += (childSender, childE) => {
+ string str = this.txt_tablename.Text; //获取输入内容
+ List sList = DbUtil.GetTableName(str); //存放数据库查询结果
+ //提前下拉,以显示搜索结果(必须要在添加项之前下拉,否则会将第一项自动添加到编辑框内 覆盖掉输入的内容)
+ this.txt_tablename.DroppedDown = true; //显示下拉列表,但是显示后鼠标指针就不见了
+ Cursor.Current = Cursors.Default; //将指针显示出来
+ //在表中已录入名字中寻找包含输入内容的项 有则添加到comboBox项中
+ this.txt_tablename.Items.Clear();
+ this.txt_tablename.Items.AddRange(sList.ToArray());
+ this.txt_tablename.Select(this.txt_tablename.Text.Length, 0);
+ };
+
}
- ///
- /// 将数据库字段转换为驼峰命名
- ///
- ///
- ///
- public static string ToCamelCase(string dbField)
+ private void modelGen_Click(object sender, EventArgs e)
{
- string[] words = dbField.Split('_');
- for (int i = 1; i < words.Length; i++)
- {
- words[i] = char.ToUpper(words[i][0]) + words[i].Substring(1);
- }
- return string.Join("", words);
+ fillModelTemplate();
}
-
- // 根据数据库表名生成实体类名称
- static string GenerateClassName(string tableName)
+ private void dgvGen1_Click(object sender, EventArgs e)
{
- string[] words = tableName.Split('_');
-
- StringBuilder sb = new StringBuilder();
- foreach (string word in words)
- {
- sb.Append(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(word.ToLower()));
- }
-
- return sb.ToString();
+ fillDgv1Template();
}
-
-
- private void button1_Click(object sender, EventArgs e)
+ private void dgvGen2_Click(object sender, EventArgs e)
{
- //string constr = txt_constr.Text.Trim();//数据库链接字符串
- txt_ret.Text = "";
- string tbname = txt_tablename.Text.Trim();//要生成的表名
- if (tbname.Equals("请选择") || tbname.Equals("")) {
- MessageBox.Show("请选择表");
- return;
- };
- string namespaceName = namespace_name.Text.Trim();
- DataTable dt = null;
- if (textBox3.Text.Trim() == "")
- {
- dt = GetDbTableInfo(tbname);
- }
- else
- {
- dt = DbHelperMySQL.Query(textBox3.Text.Trim());
- }
- var list = new List();
- txt_ret.Text += "using System;\n" +
- "using NCA_MES_Models.CommonUtils.DB.DBAttribute;\n\n";
- txt_ret.Text += $"namespace {namespaceName} {{\n\n";
- txt_ret.Text += "/// " + "\n" +
- $"/// {GetTableComment(tbname)}\n" +
- "/// " + "\n" +
- $"[TableName(\"{tbname}\")]\n" +
- $"public class {GenerateClassName(tbname)}: DBBaseModel<{GenerateClassName(tbname)}>{{";
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- var Name = dt.Rows[i]["Name"].ToString();
- var Type = dt.Rows[i]["Type"].ToString();
- var IsNullable = dt.Rows[i]["COMMENT"].ToString();
- var KeyType = dt.Rows[i]["KeyType"].ToString();
- Type type = DbTypeStr_To_CsharpType(Type);
- txt_ret.Text += "\n\n\t" + "/// " +
- "\n\t" + $"///{IsNullable}" +
- "\n\t" + "/// " +
- (String.IsNullOrEmpty(KeyType)?"":"\n\t[TableId]") +
- "\n\t" + $"[TableField(\"{Name}\",\"{IsNullable}\")]" +
- "\n\t" + $"public {type.Name} {ToCamelCase(Name)} {{ get; set; }}";
- //加注释记得引用using
- }
- txt_ret.Text += "\n}\n}";
- // 创建文件夹
- string folderPath = Path.Combine(Environment.CurrentDirectory, folderName);
- Directory.CreateDirectory(folderPath);
-
- // 创建文件并写入内容
- string filePath = Path.Combine(folderPath, GenerateClassName(tbname)+".cs");
- File.WriteAllText(filePath, txt_ret.Text);
-
- // 打开文件夹
- System.Diagnostics.Process.Start(folderPath);
+ fillDgv2Template();
}
-
-
- private void button2_Click(object sender, EventArgs e)
+ private void dgvGen3_Click(object sender, EventArgs e)
{
- string tbname = txt_tablename.Text.Trim();//要生成的表名
- if (tbname.Equals("请选择") || tbname.Equals(""))
- {
- MessageBox.Show("请选择表");
- return;
- };
- DataTable dt = null;
- if (textBox3.Text.Trim() == "")
- {
- dt = GetDbTableInfo(tbname);
- }
- else
- {
- dt = DbHelperMySQL.Query(textBox3.Text.Trim());
- }
- string uidatagridview = textBox2.Text.Trim();
- textBox1.Text = "";
- textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
- textBox1.Text += "this."+ uidatagridview + ".DataSource = new BindingSource {DataSource = data};\n";
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- var Name = dt.Rows[i]["Name"].ToString();
- textBox1.Text += $"var {Name}Column = {uidatagridview}.Columns[\"{Name}\"];\n";
- }
-
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- var Name = dt.Rows[i]["Name"].ToString();
- var IsNullable = dt.Rows[i]["COMMENT"].ToString();
- textBox1.Text += $"{Name}Column.HeaderText = \"{IsNullable}\";\n";
- }
-
- textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
- textBox1.Text += $" {uidatagridview}.AutoGenerateColumns = true;\n";
- // textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;\n";
+ fillDgv3Template();
}
-
- private void button3_Click(object sender, EventArgs e)
+ private void fillModelTemplate()
{
string tbname = txt_tablename.Text.Trim();//要生成的表名
- if (tbname.Equals("请选择") || tbname.Equals(""))
- {
- MessageBox.Show("请选择表");
- return;
- };
- DataTable dt = null;
- if (textBox3.Text.Trim() == "")
- {
- dt = GetDbTableInfo(tbname);
- }
- else {
- dt = DbHelperMySQL.Query(textBox3.Text.Trim());
+ string namespaceName = namespace_name.Text.Trim();//名称空间名称
+ List> filedInfos = DbUtil.getTableInfo(tbname, textBox3.Text.Trim());
+ using (StreamReader reader = new StreamReader(@".\Template\ModelFile.template"))
+ {
+ string fileContent = reader.ReadToEnd();
+ var template = Engine.CreateTemplate(fileContent);
+ template.Set("namespace_name", namespaceName);
+ template.Set("table_comment", DbUtil.GetTableComment(tbname));
+ template.Set("sql_table_name", tbname);
+ template.Set("table_name", DbUtil.GenerateClassName(tbname));
+ template.Set("filedInfos", filedInfos);
+ template.SetStaticType("string", typeof(string));
+ var result = template.Render();
+ this.txt_ret.Text = result;
+ DbUtil.openFile(tbname, result);
}
-
- string uidatagridview = textBox2.Text.Trim();
- textBox1.Text = $"this.{uidatagridview}.AutoGenerateColumns = false;";
- textBox1.Text += $" string sql = $\"SELECT column_name, column_comment from information_schema.COLUMNS where table_name = '{tbname}' ORDER BY ORDINAL_POSITION; \";\r\n" +
- $" DataTable dt = DbHelperMySQL.Query(sql);\n";
- textBox1.Text += "List cols = new List();\n";
- textBox1.Text += "for (int i = 0; i < dt.Rows.Count; i++){\n" +
- " DataGridViewTextBoxColumn temp = new DataGridViewTextBoxColumn();\n" +
- "temp.Name = dt.Rows[i][0].ToString();\n" +
- "temp.HeaderText = dt.Rows[i][1].ToString();\n" +
- "temp.DataPropertyName= dt.Rows[i][0].ToString();\n" +
- "cols.Add(temp);" +
- "}\n";
- textBox1.Text += "DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();\r\n" +
- "editBtn.HeaderText = \"编辑\";\r\n" +
- "editBtn.Name = \"editBtn\";\r\n" +
- "editBtn.Text = \"编辑\";\r\n" +
- "editBtn.UseColumnTextForButtonValue = true;\r\n" +
- "editBtn.Frozen = true;\n";
- textBox1.Text += " DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();\r\n" +
- "addBtn.HeaderText = \"新增\";\r\n" +
- "addBtn.Name = \"addBtn\";\r\n" +
- "addBtn.Text = \"新增\";\r\n" +
- "addBtn.UseColumnTextForButtonValue = true;\r\n" +
- "addBtn.Frozen = true;\n ";
- textBox1.Text += "cols.Add(editBtn);\n cols.Add(addBtn);\n";
- textBox1.Text += "if (cols.Last().Frozen)\r\n" +
- "{\r\n " +
- $"this.{uidatagridview}.RightToLeft = RightToLeft.Yes;\r\n" +
- "cols.Reverse();\r\n" +
- "}\r\n" +
- $"this.{uidatagridview}.Columns.AddRange(cols.ToArray());\r\n\r\n" +
- $"if (this.{uidatagridview}.Columns.Count > 0)\r\n" +
- $"this.{uidatagridview}.FirstDisplayedScrollingColumnIndex = this.{uidatagridview}.Columns.Count - 2;\n";
- textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
- textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
- textBox1.Text += $"this.{uidatagridview}.DataSource = data;\n";
}
- private void button4_Click(object sender, EventArgs e)
+ private void fillDgv1Template()
{
string tbname = txt_tablename.Text.Trim();//要生成的表名
- if (tbname.Equals("请选择") || tbname.Equals(""))
- {
- MessageBox.Show("请选择表");
- return;
- };
-
-
- DataTable dt = null;
- if (textBox3.Text.Trim() == "")
- {
- dt = GetDbTableInfo(tbname);
+ string dgvName = textBox2.Text.Trim(); //dgv空间名称
+ List> filedInfos = DbUtil.getTableInfo(tbname, textBox3.Text.Trim());
+ List timeFileds = DbUtil.getTimeFields(filedInfos);
+ using (StreamReader reader = new StreamReader(@".\Template\DataGridView_1.template"))
+ {
+ string fileContent = reader.ReadToEnd();
+ var template = Engine.CreateTemplate(fileContent);
+ template.Set("table_comment", DbUtil.GetTableComment(tbname));
+ template.Set("sql_table_name", tbname);
+ template.Set("table_name", DbUtil.GenerateClassName(tbname));
+ template.Set("dgv_name", dgvName);
+ template.Set("filedInfos", filedInfos);
+ template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
+ template.SetStaticType("string", typeof(string));
+ var result = template.Render();
+ this.textBox1.Text = result;
}
- else {
- dt = DbHelperMySQL.Query(textBox3.Text.Trim());
- }
- string uidatagridview = textBox2.Text.Trim();
- textBox1.Text = $"this.{uidatagridview}.AutoGenerateColumns = false;";
- textBox1.Text += "List cols = new List();\n\n";
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- var Name = dt.Rows[i]["Name"].ToString();
- var IsNullable = dt.Rows[i]["COMMENT"].ToString();
- textBox1.Text += $"DataGridViewTextBoxColumn {Name}Cloumn = new DataGridViewTextBoxColumn();\n";
- textBox1.Text += $"{Name}Cloumn.Name = \"{Name}\";" +
- $"{Name}Cloumn.HeaderText =\"{IsNullable}\";" +
- $"{Name}Cloumn.DataPropertyName = \"{Name}\";" +
- $"cols.Add({Name}Cloumn);\n\n";
- }
- textBox1.Text += "DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();\r\n" +
- "editBtn.HeaderText = \"编辑\";\r\n" +
- "editBtn.Name = \"editBtn\";\r\n" +
- "editBtn.Text = \"编辑\";\r\n" +
- "editBtn.UseColumnTextForButtonValue = true;\r\n" +
- "editBtn.Frozen = true;\n";
- textBox1.Text += " DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();\r\n" +
- "addBtn.HeaderText = \"新增\";\r\n" +
- "addBtn.Name = \"addBtn\";\r\n" +
- "addBtn.Text = \"新增\";\r\n" +
- "addBtn.UseColumnTextForButtonValue = true;\r\n" +
- "addBtn.Frozen = true;\n ";
- textBox1.Text += "cols.Add(editBtn);\n cols.Add(addBtn);\n";
- textBox1.Text += "if (cols.Last().Frozen)\r\n" +
- "{\r\n " +
- $"this.{uidatagridview}.RightToLeft = RightToLeft.Yes;\r\n" +
- "cols.Reverse();\r\n" +
- "}\r\n" +
- $"this.{uidatagridview}.Columns.AddRange(cols.ToArray());\r\n\r\n" +
- $"if (this.{uidatagridview}.Columns.Count > 0)\r\n" +
- $"this.{uidatagridview}.FirstDisplayedScrollingColumnIndex = this.{uidatagridview}.Columns.Count - 2;\n";
- textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
- textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
- textBox1.Text += $"this.{uidatagridview}.DataSource = data;\n";
- /* textBox1.Text += $"this.{uidatagridview}.Rows.AddRange(data.AsEnumerable().Select(row => {{\r\n" +
- "DataGridViewRow dataGridViewRow = new DataGridViewRow();\r\n " +
- "DataGridViewButtonCell addCell = new DataGridViewButtonCell();\r\n" +
- "addCell.Value = \"新增\";\r\n " +
- "dataGridViewRow.Cells.Add(addCell);\r\n " +
- "DataGridViewButtonCell editCell = new DataGridViewButtonCell();\r\n" +
- "editCell.Value = \"修改\";\r\n " +
- "dataGridViewRow.Cells.Add(editCell);\r\n " +
- "foreach (var item in row.ItemArray.Reverse())\r\n " +
- "{\r\n" +
- "DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();\r\n" +
- "cell.Value = item;\r\n " +
- "dataGridViewRow.Cells.Add(cell);\r\n" +
- "}\r\n" +
- "dataGridViewRow.Height = 40;\r\n" +
- "return dataGridViewRow;\r\n" +
- "}).ToArray());";*/
-
}
- //订单下拉模糊搜索
- private void orderId_TextUpdate(object sender, EventArgs e) //不要用TextChanged
+ private void fillDgv2Template()
{
- string s = this.txt_tablename.Text; //获取输入内容
- List sList = GetTableName(s); //存放数据库查询结果
- //提前下拉,以显示搜索结果(必须要在添加项之前下拉,否则会将第一项自动添加到编辑框内 覆盖掉输入的内容)
- this.txt_tablename.DroppedDown = true; //显示下拉列表,但是显示后鼠标指针就不见了
- Cursor.Current = Cursors.Default; //将指针显示出来
-
- //在表中已录入名字中寻找包含输入内容的项 有则添加到comboBox项中
- this.txt_tablename.Items.Clear();
- this.txt_tablename.Items.AddRange(sList.ToArray());
- this.txt_tablename.Select(this.txt_tablename.Text.Length, 0);
- }
-
- ///
- /// 根据参数,获取数据表信息
- ///
- ///
- public static DataTable GetDbTableInfo(string tabname)
- {
- string sql = @"SELECT
- c.COLUMN_NAME AS Name,
- c.COLUMN_TYPE AS Type,
- c.COLUMN_COMMENT AS Comment,
- CASE WHEN CONSTRAINT_NAME = 'PRIMARY' THEN 'PRIMARY KEY' ELSE '' END AS KeyType
- FROM
- INFORMATION_SCHEMA.COLUMNS c
- LEFT JOIN
- INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
- ON
- c.TABLE_SCHEMA = k.TABLE_SCHEMA
- AND c.TABLE_NAME = k.TABLE_NAME
- AND c.COLUMN_NAME = k.COLUMN_NAME
- WHERE
- c.TABLE_NAME = '{0}'
- ORDER BY
- c.ORDINAL_POSITION;";
- //string str = $"SELECT COLUMN_NAME AS Name, COLUMN_TYPE AS Type,COLUMN_COMMENT AS COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{tabname}' ORDER BY ORDINAL_POSITION;";
- var dt = DbHelperMySQL.Query(String.Format(sql, tabname));
- return dt;
- }
-
-
- public static List GetTableName(string tableName)
- {
- string sql = $"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME LIKE '{tableName}%' limit 20;";
- var dt = DbHelperMySQL.Query(sql);
- //查询数据库表中所有已录入人员
- List sList = new List(); //存放数据库查询结果
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- sList.Add(dt.Rows[i]["TABLE_NAME"].ToString());
- }
- return sList;
- //return dt;
- }
- public static string GetTableComment(string tableName)
- {
- string sql = $"SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME ='{tableName}';";
- var dt = DbHelperMySQL.Query(sql);
-
- if(dt.Rows.Count<1) return tableName;
- return dt.Rows[0]["TABLE_COMMENT"].ToString();
- }
-
- public static List GetTableName()
- {
- string sql = $"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}';";
- var dt = DbHelperMySQL.Query(sql);
- //查询数据库表中所有已录入人员
- List sList = new List(); //存放数据库查询结果
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- sList.Add(dt.Rows[i]["TABLE_NAME"].ToString());
+ string tbname = txt_tablename.Text.Trim();//要生成的表名
+ string dgvName = textBox2.Text.Trim(); //dgv空间名称
+ List timeFileds = DbUtil.getTimeFields(DbUtil.getTableInfo(tbname, textBox3.Text.Trim()));
+ using (StreamReader reader = new StreamReader(@".\Template\DataGridView_2.template"))
+ {
+ string fileContent = reader.ReadToEnd();
+ var template = Engine.CreateTemplate(fileContent);
+ template.Set("table_comment", DbUtil.GetTableComment(tbname));
+ template.Set("sql_table_name", tbname);
+ template.Set("table_name", DbUtil.GenerateClassName(tbname));
+ template.Set("dgv_name", dgvName);
+ template.Set("isGenOperationColumn", isGenOperationColumn.Checked);
+ template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
+ template.SetStaticType("string", typeof(string));
+ var result = template.Render();
+ this.textBox1.Text = result;
}
- return sList;
- //return dt;
}
-
- ///
- /// 类型转换枚举
- ///
- protected Dictionary DbTypeDic { get; } = new Dictionary()
+ private void fillDgv3Template()
{
- { "int", typeof(Int32) },
- { "text", typeof(string) },
- { "enum", typeof(string) },
- { "bigint", typeof(Int64) },
- { "binary", typeof(byte[]) },
- { "bit", typeof(bool) },
- { "char", typeof(string) },
- { "date", typeof(DateTime) },
- { "datetime", typeof(DateTime) },
- { "datetime2", typeof(DateTime) },
- { "decimal", typeof(decimal) },
- { "float", typeof(double) },
- { "image", typeof(byte[]) },
- { "money", typeof(decimal) },
- { "nchar", typeof(string) },
- { "ntext", typeof(string) },
- { "numeric", typeof(decimal) },
- { "nvarchar", typeof(string) },
- { "real", typeof(Single) },
- { "smalldatetime", typeof(DateTime) },
- { "smallint", typeof(Int16) },
- { "smallmoney", typeof(decimal) },
- { "timestamp", typeof(DateTime) },
- { "tinyint", typeof(string) },
- { "varbinary", typeof(byte[]) },
- { "varchar", typeof(string) },
- { "variant", typeof(object) },
- { "uniqueidentifier", typeof(Guid) },
- };
- ///
- /// 获取字段类型
- ///
- ///
- ///
- public virtual Type DbTypeStr_To_CsharpType(string dbTypeStr)
- {
- if (dbTypeStr.Contains('('))
- {
- string[] strings = dbTypeStr.Split('(');
- dbTypeStr = strings[0];
+ string tbname = txt_tablename.Text.Trim();//要生成的表名
+ string dgvName = textBox2.Text.Trim(); //dgv空间名称
+ List> filedInfos = DbUtil.getTableInfo(tbname, textBox3.Text.Trim());
+ List timeFileds = DbUtil.getTimeFields(filedInfos);
+ using (StreamReader reader = new StreamReader(@".\Template\DataGridView_3.template"))
+ {
+ string fileContent = reader.ReadToEnd();
+ var template = Engine.CreateTemplate(fileContent);
+ template.Set("table_comment", DbUtil.GetTableComment(tbname));
+ template.Set("sql_table_name", tbname);
+ template.Set("table_name", DbUtil.GenerateClassName(tbname));
+ template.Set("dgv_name", dgvName);
+ template.Set("filedInfos", filedInfos);
+ template.Set("isGenOperationColumn", isGenOperationColumn.Checked);
+ template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
+ template.SetStaticType("string", typeof(string));
+ var result = template.Render();
+ this.textBox1.Text = result;
}
- string _dbTypeStr = dbTypeStr.ToLower();
- Type type = null;
- if (DbTypeDic.ContainsKey(_dbTypeStr))
- type = DbTypeDic[_dbTypeStr];
- else
- type = typeof(string);
-
- return type;
}
-
-
}
}
diff --git a/DatabasetoEntityclass/Program.cs b/DatabasetoEntityclass/Program.cs
index 389dad4..c176f9e 100644
--- a/DatabasetoEntityclass/Program.cs
+++ b/DatabasetoEntityclass/Program.cs
@@ -1,10 +1,11 @@
-using System;
+using GenerateClass.Util;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
-namespace WindowsFormsApp1
+namespace GenerateClass
{
internal static class Program
{
@@ -14,6 +15,7 @@ namespace WindowsFormsApp1
[STAThread]
static void Main()
{
+ Config.GlobalInit();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
diff --git a/DatabasetoEntityclass/Properties/Resources.Designer.cs b/DatabasetoEntityclass/Properties/Resources.Designer.cs
index 8b479b7..db55268 100644
--- a/DatabasetoEntityclass/Properties/Resources.Designer.cs
+++ b/DatabasetoEntityclass/Properties/Resources.Designer.cs
@@ -1,69 +1,61 @@
//------------------------------------------------------------------------------
//
// 此代码由工具生成。
-// 运行时版本: 4.0.30319.42000
+// 运行时版本:4.0.30319.42000
//
-// 对此文件的更改可能导致不正确的行为,如果
-// 重新生成代码,则所做更改将丢失。
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
-namespace WindowsFormsApp1.Properties
-{
-
-
+namespace GenerateClass.Properties {
+ using System;
+
+
///
- /// 强类型资源类,用于查找本地化字符串等。
+ /// 一个强类型的资源类,用于查找本地化的字符串等。
///
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
+ internal class Resources {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
+ internal Resources() {
}
-
+
///
- /// 返回此类使用的缓存 ResourceManager 实例。
+ /// 返回此类使用的缓存的 ResourceManager 实例。
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsFormsApp1.Properties.Resources", typeof(Resources).Assembly);
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GenerateClass.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
///
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
return resourceCulture;
}
- set
- {
+ set {
resourceCulture = value;
}
}
diff --git a/DatabasetoEntityclass/Properties/Settings.Designer.cs b/DatabasetoEntityclass/Properties/Settings.Designer.cs
index 438df21..c4cca6f 100644
--- a/DatabasetoEntityclass/Properties/Settings.Designer.cs
+++ b/DatabasetoEntityclass/Properties/Settings.Designer.cs
@@ -1,28 +1,24 @@
//------------------------------------------------------------------------------
//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
-namespace WindowsFormsApp1.Properties
-{
-
-
+namespace GenerateClass.Properties {
+
+
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
+
+ public static Settings Default {
+ get {
return defaultInstance;
}
}
diff --git a/DatabasetoEntityclass/Template/DataGridView_1.template b/DatabasetoEntityclass/Template/DataGridView_1.template
new file mode 100644
index 0000000..4760c21
--- /dev/null
+++ b/DatabasetoEntityclass/Template/DataGridView_1.template
@@ -0,0 +1,35 @@
+ DataTable data = DbHelperMySQL.Query("select * from `${sql_table_name}`");
+ this.${dgv_name}.DataSource = new BindingSource {DataSource = data};
+$foreach(filedInfo in filedInfos)
+ var ${filedInfo["field_name"]}Column = ${dgv_name}.Columns["${filedInfo["sql_field_name"]}"];
+$end
+
+$foreach(filedInfo in filedInfos)
+ ${filedInfo["field_name"]}Column.HeaderText = "${filedInfo["comment"]}";
+$end
+ ${dgv_name}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
+ ${dgv_name}.AutoGenerateColumns = true;
+
+$if(timeFiledStr != "")
+ DateTimePicker dtp = new DateTimePicker();
+ ${dgv_name}.Controls.Add(dtp);
+ dtp.Visible = false;
+ dtp.TextChanged += (sender, e) => ${dgv_name}.CurrentCell.Value = dtp.Value.ToString("yyyy-MM-dd");
+ dtp.CloseUp += (sender, e) => dtp.Visible = false;
+ ${dgv_name}.CellClick += (sender, e) => {
+ if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
+ DataGridView dgv = (sender as DataGridView);
+ if (new List() {
+ ${timeFiledStr}
+ }.Contains(dgv.Columns[e.ColumnIndex].Name))
+ {
+ var _Recatngle = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
+ dtp.Size = _Recatngle.Size;
+ dtp.Location = _Recatngle.Location;
+ dtp.Visible = true;
+ }
+ else dtp.Visible = false;
+ };
+ ${dgv_name}.Scroll += (sender, e) => dtp.Visible = false;
+ ${dgv_name}.SizeChanged += (sender, e) => { if (dtp.Visible) dtp.Visible = false; };
+$end
\ No newline at end of file
diff --git a/DatabasetoEntityclass/Template/DataGridView_2.template b/DatabasetoEntityclass/Template/DataGridView_2.template
new file mode 100644
index 0000000..16f7a93
--- /dev/null
+++ b/DatabasetoEntityclass/Template/DataGridView_2.template
@@ -0,0 +1,65 @@
+ this.${dgv_name}.AutoGenerateColumns = false;
+ string sql = $"SELECT column_name, column_comment from information_schema.COLUMNS where table_name = '${sql_table_name}' ORDER BY ORDINAL_POSITION; ";
+ DataTable dt = DbHelperMySQL.Query(sql);
+ List cols = new List();
+ for (int i = 0; i < dt.Rows.Count; i++){
+ DataGridViewTextBoxColumn temp = new DataGridViewTextBoxColumn();
+ temp.Name = dt.Rows[i][0].ToString();
+ temp.HeaderText = dt.Rows[i][1].ToString();
+ temp.DataPropertyName= dt.Rows[i][0].ToString();
+ cols.Add(temp);
+ }
+$if(isGenOperationColumn)
+ DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();
+ editBtn.HeaderText = "编辑";
+ editBtn.Name = "editBtn";
+ editBtn.Text = "编辑";
+ editBtn.UseColumnTextForButtonValue = true;
+ editBtn.Frozen = true;
+
+ DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();
+ addBtn.HeaderText = "新增";
+ addBtn.Name = "addBtn";
+ addBtn.Text = "新增";
+ addBtn.UseColumnTextForButtonValue = true;
+ addBtn.Frozen = true;
+ cols.Add(editBtn);
+ cols.Add(addBtn);
+ if (cols.Last().Frozen)
+ {
+ this.${dgv_name}.RightToLeft = RightToLeft.Yes;
+ cols.Reverse();
+ }
+$end
+ this.${dgv_name}.Columns.AddRange(cols.ToArray());
+$if(isGenOperationColumn)
+ if (cols.Count > 0)
+ this.${dgv_name}.FirstDisplayedScrollingColumnIndex = cols.Count - 2;
+$end
+ ${dgv_name}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
+ DataTable data = DbHelperMySQL.Query("select * from ${sql_table_name}");
+ this.${dgv_name}.DataSource = data;
+
+$if(timeFiledStr != "")
+ DateTimePicker dtp = new DateTimePicker();
+ ${dgv_name}.Controls.Add(dtp);
+ dtp.Visible = false;
+ dtp.TextChanged += (sender, e) => ${dgv_name}.CurrentCell.Value = dtp.Value.ToString("yyyy-MM-dd");
+ dtp.CloseUp += (sender, e) => dtp.Visible = false;
+ ${dgv_name}.CellClick += (sender, e) => {
+ if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
+ DataGridView dgv = (sender as DataGridView);
+ if (new List() {
+ ${timeFiledStr}
+ }.Contains(dgv.Columns[e.ColumnIndex].Name))
+ {
+ var _Recatngle = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
+ dtp.Size = _Recatngle.Size;
+ dtp.Location = _Recatngle.Location;
+ dtp.Visible = true;
+ }
+ else dtp.Visible = false;
+ };
+ ${dgv_name}.Scroll += (sender, e) => dtp.Visible = false;
+ ${dgv_name}.SizeChanged += (sender, e) => { if (dtp.Visible) dtp.Visible = false; };
+$end
\ No newline at end of file
diff --git a/DatabasetoEntityclass/Template/DataGridView_3.template b/DatabasetoEntityclass/Template/DataGridView_3.template
new file mode 100644
index 0000000..75c80fc
--- /dev/null
+++ b/DatabasetoEntityclass/Template/DataGridView_3.template
@@ -0,0 +1,66 @@
+ this.${dgv_name}.AutoGenerateColumns = false;
+ List cols = new List();
+$foreach(filedInfo in filedInfos)
+
+ DataGridViewTextBoxColumn ${filedInfo["field_name"]}Cloumn = new DataGridViewTextBoxColumn();
+$if(filedInfo["is_primary_key"]=="true")
+ ${filedInfo["field_name"]}Cloumn.Visible= false;
+$end
+ ${filedInfo["field_name"]}Cloumn.Name = "${filedInfo["sql_field_name"]}"; ${filedInfo["field_name"]}Cloumn.HeaderText = "${filedInfo["comment"]}";
+ ${filedInfo["field_name"]}Cloumn.DataPropertyName = "${filedInfo["sql_field_name"]}"; cols.Add(${filedInfo["field_name"]}Cloumn);
+$end
+
+$if(isGenOperationColumn)
+ DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();
+ editBtn.HeaderText = "编辑";
+ editBtn.Name = "editBtn";
+ editBtn.Text = "编辑";
+ editBtn.UseColumnTextForButtonValue = true;
+ editBtn.Frozen = true;
+
+ DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();
+ addBtn.HeaderText = "新增";
+ addBtn.Name = "addBtn";
+ addBtn.Text = "新增";
+ addBtn.UseColumnTextForButtonValue = true;
+ addBtn.Frozen = true;
+ cols.Add(editBtn);
+ cols.Add(addBtn);
+ if (cols.Last().Frozen)
+ {
+ this.${dgv_name}.RightToLeft = RightToLeft.Yes;
+ cols.Reverse();
+ }
+$end
+ this.${dgv_name}.Columns.AddRange(cols.ToArray());
+$if(isGenOperationColumn)
+ if (cols.Count > 0)
+ this.${dgv_name}.FirstDisplayedScrollingColumnIndex = cols.Count - 2;
+$end
+ ${dgv_name}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
+ DataTable data = DbHelperMySQL.Query($"select * from ${sql_table_name}");
+ this.${dgv_name}.DataSource = data;
+
+$if(timeFiledStr != "")
+ DateTimePicker dtp = new DateTimePicker();
+ ${dgv_name}.Controls.Add(dtp);
+ dtp.Visible = false;
+ dtp.TextChanged += (sender, e) => ${dgv_name}.CurrentCell.Value = dtp.Value.ToString("yyyy-MM-dd");
+ dtp.CloseUp += (sender, e) => dtp.Visible = false;
+ ${dgv_name}.CellClick += (sender, e) => {
+ if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
+ DataGridView dgv = (sender as DataGridView);
+ if (new List() {
+ ${timeFiledStr}
+ }.Contains(dgv.Columns[e.ColumnIndex].Name))
+ {
+ var _Recatngle = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
+ dtp.Size = _Recatngle.Size;
+ dtp.Location = _Recatngle.Location;
+ dtp.Visible = true;
+ }
+ else dtp.Visible = false;
+ };
+ ${dgv_name}.Scroll += (sender, e) => dtp.Visible = false;
+ ${dgv_name}.SizeChanged += (sender, e) => { if (dtp.Visible) dtp.Visible = false; };
+$end
\ No newline at end of file
diff --git a/DatabasetoEntityclass/Template/ModelFile.template b/DatabasetoEntityclass/Template/ModelFile.template
new file mode 100644
index 0000000..69d131d
--- /dev/null
+++ b/DatabasetoEntityclass/Template/ModelFile.template
@@ -0,0 +1,28 @@
+using System;
+using NCA_MES_Models.CommonUtils.DB.DBAttribute;
+
+namespace ${namespace_name}
+{
+ ///
+ /// ${table_comment}
+ ///
+ [TableName("${sql_table_name}")]
+ public class ${table_name} : DBBaseModel<${table_name}>
+ {
+$foreach(filedInfo in filedInfos)
+
+ ///
+ /// ${filedInfo["comment"]}
+ ///
+$if(filedInfo["is_primary_key"]=="true")
+ [TableId]
+$end
+$if(filedInfo["is_nullable"]=="true")
+ [NotEmpty]
+$end
+ [TableField("${filedInfo["sql_field_name"]}", "${filedInfo["comment"]}")]
+ public ${filedInfo["type_name"]} ${filedInfo["field_name"]} { get; set; }
+$end
+
+ }
+}
\ No newline at end of file
diff --git a/DatabasetoEntityclass/Util/Config.cs b/DatabasetoEntityclass/Util/Config.cs
new file mode 100644
index 0000000..c4f9b08
--- /dev/null
+++ b/DatabasetoEntityclass/Util/Config.cs
@@ -0,0 +1,14 @@
+using JinianNet.JNTemplate;
+
+namespace GenerateClass.Util
+{
+ public class Config
+ {
+ public static void GlobalInit()
+ {
+ Engine.Configure((options) => {
+ options.OutMode = OutMode.Auto;
+ });
+ }
+ }
+}
diff --git a/DatabasetoEntityclass/DbHelper.cs b/DatabasetoEntityclass/Util/DbHelper.cs
similarity index 99%
rename from DatabasetoEntityclass/DbHelper.cs
rename to DatabasetoEntityclass/Util/DbHelper.cs
index 11d5207..9408a1a 100644
--- a/DatabasetoEntityclass/DbHelper.cs
+++ b/DatabasetoEntityclass/Util/DbHelper.cs
@@ -11,7 +11,7 @@ using System.Configuration;
using System.Xml;
using System.Text.RegularExpressions;
-namespace WindowsFormsApp1
+namespace GenerateClass
{
public class DbHelperMySQL
{
diff --git a/DatabasetoEntityclass/Util/DbUtil.cs b/DatabasetoEntityclass/Util/DbUtil.cs
new file mode 100644
index 0000000..10295ee
--- /dev/null
+++ b/DatabasetoEntityclass/Util/DbUtil.cs
@@ -0,0 +1,277 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GenerateClass.Util
+{
+ public class DbUtil
+ {
+ public static string folderName = "GenFolder"; // 文件夹名称
+
+ public static void openFile(string tbname, string infoStr)
+ {
+ // 创建文件夹
+ string folderPath = Path.Combine(Environment.CurrentDirectory, folderName);
+ Directory.CreateDirectory(folderPath);
+ // 创建文件并写入内容
+ string filePath = Path.Combine(folderPath, DbUtil.GenerateClassName(tbname) + ".cs");
+ File.WriteAllText(filePath, infoStr);
+ // 打开文件夹
+ System.Diagnostics.Process.Start(folderPath);
+ }
+
+ public static string joinList(List list)
+ {
+ string str = "";
+ foreach (var item in list)
+ {
+ str += (str == "" ? "" : ",") + "\"" + item + "\"";
+ }
+ return str;
+ }
+
+ public static List> getTableInfo(string tbname, string sql = "")
+ {
+ DataTable dt = null;
+ if (sql == "")
+ dt = DbUtil.GetDbTableInfo(tbname);
+ else
+ dt = DbHelperMySQL.Query(sql);
+ List> filedInfos = new List>();
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ var dict = new Dictionary();
+ var Name = dt.Rows[i]["Name"].ToString();
+ var COMMENT = dt.Rows[i]["COMMENT"].ToString();
+ var KeyType = dt.Rows[i]["KeyType"].ToString();
+ var Nullable = dt.Rows[i]["Nullable"].ToString();
+ Type type = DbUtil.DbTypeStr_To_CsharpType(dt.Rows[i]["Type"].ToString());
+ dict["sql_field_name"] = Name;
+ dict["field_name"] = DbUtil.ToCamelCase(Name);
+ dict["type_name"] = type.Name;
+ dict["comment"] = COMMENT;
+ dict["is_primary_key"] = (String.IsNullOrEmpty(KeyType) ? "false" : "true");
+ dict["is_nullable"] = (String.IsNullOrEmpty(KeyType) && !("NULL".Equals(Nullable)) ? "true" : "false");
+ filedInfos.Add(dict);
+ }
+ return filedInfos;
+ }
+
+ public static List getTimeFields(List> filedInfos)
+ {
+ var list = new List();
+ filedInfos.ForEach(info => {
+ if (info["type_name"] == "DateTime") list.Add(info["sql_field_name"]);
+ });
+ return list;
+ }
+ ///
+ /// 根据参数,获取数据表信息
+ ///
+ ///
+ public static DataTable GetDbTableInfo(string tabname)
+ {
+ string sql = @"SELECT
+ c.COLUMN_NAME AS Name,
+ c.COLUMN_TYPE AS Type,
+ c.COLUMN_COMMENT AS Comment,
+ CASE WHEN CONSTRAINT_NAME = 'PRIMARY' THEN 'PRIMARY KEY' ELSE '' END AS KeyType,
+ CASE WHEN c.IS_NULLABLE = 'NO' THEN 'NOT NULL' ELSE 'NULL' END AS Nullable
+ FROM
+ INFORMATION_SCHEMA.COLUMNS c
+ LEFT JOIN
+ INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
+ ON
+ c.TABLE_SCHEMA = k.TABLE_SCHEMA
+ AND c.TABLE_NAME = k.TABLE_NAME
+ AND c.COLUMN_NAME = k.COLUMN_NAME
+ WHERE
+ c.TABLE_NAME = '{0}'
+ ORDER BY
+ c.ORDINAL_POSITION;";
+ //string str = $"SELECT COLUMN_NAME AS Name, COLUMN_TYPE AS Type,COLUMN_COMMENT AS COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{tabname}' ORDER BY ORDINAL_POSITION;";
+ var dt = DbHelperMySQL.Query(String.Format(sql, tabname));
+ return dt;
+ }
+
+
+ public static List GetTableName(string tableName)
+ {
+ string sql = $"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME LIKE '{tableName}%' limit 20;";
+ var dt = DbHelperMySQL.Query(sql);
+ //查询数据库表中所有已录入人员
+ List sList = new List(); //存放数据库查询结果
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ sList.Add(dt.Rows[i]["TABLE_NAME"].ToString());
+ }
+ return sList;
+ //return dt;
+ }
+ public static string GetTableComment(string tableName)
+ {
+ string sql = $"SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME ='{tableName}';";
+ var dt = DbHelperMySQL.Query(sql);
+
+ if (dt.Rows.Count < 1) return tableName;
+ return dt.Rows[0]["TABLE_COMMENT"].ToString();
+ }
+
+ public static List GetTableName()
+ {
+ string sql = $"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}';";
+ var dt = DbHelperMySQL.Query(sql);
+ //查询数据库表中所有已录入人员
+ List sList = new List(); //存放数据库查询结果
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ sList.Add(dt.Rows[i]["TABLE_NAME"].ToString());
+ }
+ return sList;
+ }
+
+ public static Dictionary DbTypeDic { get; } = new Dictionary(StringComparer.OrdinalIgnoreCase)
+ {
+ { "int", typeof(int) },
+ { "integer", typeof(int) },
+ { "tinyint", typeof(byte) },
+ { "smallint", typeof(short) },
+ { "mediumint", typeof(int) },
+ { "bigint", typeof(long) },
+ { "float", typeof(float) },
+ { "double", typeof(double) },
+ { "decimal", typeof(decimal) },
+ { "char", typeof(string) },
+ { "varchar", typeof(string) },
+ { "text", typeof(string) },
+ { "mediumtext", typeof(string) },
+ { "longtext", typeof(string) },
+ { "enum", typeof(string) },
+ { "date", typeof(DateTime) },
+ { "time", typeof(TimeSpan) },
+ { "datetime", typeof(DateTime) },
+ { "timestamp", typeof(DateTime) },
+ { "year", typeof(int) },
+ { "binary", typeof(byte[]) },
+ { "varbinary", typeof(byte[]) },
+ { "blob", typeof(byte[]) },
+ { "mediumblob", typeof(byte[]) },
+ { "longblob", typeof(byte[]) },
+ { "bit", typeof(bool) },
+ { "boolean", typeof(bool) },
+ { "json", typeof(string) },
+ { "geometry", typeof(object) }, // Geometry 数据类型的映射可能需要特殊处理
+ // 更多其他数据类型
+ };
+ ///
+ /// 获取字段类型
+ ///
+ ///
+ ///
+ public static Type DbTypeStr_To_CsharpType(string dbTypeStr)
+ {
+ if (dbTypeStr.Contains('('))
+ {
+ string[] strings = dbTypeStr.Split('(');
+ dbTypeStr = strings[0];
+ }
+ string _dbTypeStr = dbTypeStr.ToLower();
+ Type type = null;
+ if (DbTypeDic.ContainsKey(_dbTypeStr))
+ type = DbTypeDic[_dbTypeStr];
+ else
+ type = typeof(string);
+
+ return type;
+ }
+ ///
+ /// 将数据库字段转换为驼峰命名
+ ///
+ ///
+ ///
+ public static string ToCamelCase(string dbField)
+ {
+ string[] words = dbField.Split('_');
+ for (int i = 1; i < words.Length; i++)
+ {
+ words[i] = char.ToUpper(words[i][0]) + words[i].Substring(1);
+ }
+ return string.Join("", words);
+ }
+
+ // 根据数据库表名生成实体类名称
+ public static string GenerateClassName(string tableName)
+ {
+ string[] words = tableName.Split('_');
+
+ StringBuilder sb = new StringBuilder();
+ foreach (string word in words)
+ {
+ sb.Append(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(word.ToLower()));
+ }
+
+ return sb.ToString();
+ }
+ /* ///
+ /// 类型转换枚举
+ ///
+ protected Dictionary DbTypeDic { get; } = new Dictionary()
+ {
+ { "int", typeof(Int32) },
+ { "text", typeof(string) },
+ { "enum", typeof(string) },
+ { "bigint", typeof(Int64) },
+ { "binary", typeof(byte[]) },
+ { "bit", typeof(bool) },
+ { "char", typeof(string) },
+ { "date", typeof(DateTime) },
+ { "datetime", typeof(DateTime) },
+ { "datetime2", typeof(DateTime) },
+ { "decimal", typeof(decimal) },
+ { "float", typeof(double) },
+ { "image", typeof(byte[]) },
+ { "money", typeof(decimal) },
+ { "nchar", typeof(string) },
+ { "ntext", typeof(string) },
+ { "numeric", typeof(decimal) },
+ { "nvarchar", typeof(string) },
+ { "real", typeof(Single) },
+ { "smalldatetime", typeof(DateTime) },
+ { "smallint", typeof(Int16) },
+ { "smallmoney", typeof(decimal) },
+ { "timestamp", typeof(DateTime) },
+ { "tinyint", typeof(bool) },
+ { "varbinary", typeof(byte[]) },
+ { "varchar", typeof(string) },
+ { "variant", typeof(object) },
+ { "uniqueidentifier", typeof(Guid) },
+ };
+ ///
+ /// 获取字段类型
+ ///
+ ///
+ ///
+ public virtual Type DbTypeStr_To_CsharpType(string dbTypeStr)
+ {
+ if (dbTypeStr.Contains('('))
+ {
+ string[] strings = dbTypeStr.Split('(');
+ dbTypeStr = strings[0];
+ }
+ string _dbTypeStr = dbTypeStr.ToLower();
+ Type type = null;
+ if (DbTypeDic.ContainsKey(_dbTypeStr))
+ type = DbTypeDic[_dbTypeStr];
+ else
+ type = typeof(string);
+
+ return type;
+ }
+*/
+ }
+}
diff --git a/DatabasetoEntityclass/Util/OldInfo.cs b/DatabasetoEntityclass/Util/OldInfo.cs
new file mode 100644
index 0000000..91c8a61
--- /dev/null
+++ b/DatabasetoEntityclass/Util/OldInfo.cs
@@ -0,0 +1,234 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GenerateClass.Util
+{
+ internal class OldInfo
+ {
+ /*private void fillDgv3Str()
+ {
+ string tbname = txt_tablename.Text.Trim();//要生成的表名
+ if (tbname.Equals("请选择") || tbname.Equals(""))
+ {
+ MessageBox.Show("请选择表");
+ return;
+ };
+ DataTable dt = null;
+ if (textBox3.Text.Trim() == "") dt = DbUtil.GetDbTableInfo(tbname);
+ else dt = DbHelperMySQL.Query(textBox3.Text.Trim());
+ string uidatagridview = textBox2.Text.Trim();
+ textBox1.Text = $"this.{uidatagridview}.AutoGenerateColumns = false;";
+ textBox1.Text += "List cols = new List();\n\n";
+ var list = new List();
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ var Name = dt.Rows[i]["Name"].ToString();
+ var IsNullable = dt.Rows[i]["COMMENT"].ToString();
+ Type type = DbUtil.DbTypeStr_To_CsharpType(dt.Rows[i]["Type"].ToString());
+ if (type.Name == "DateTime") list.Add(Name);
+ textBox1.Text += $"DataGridViewTextBoxColumn {Name}Cloumn = new DataGridViewTextBoxColumn();\n";
+ textBox1.Text += $"{Name}Cloumn.Name = \"{Name}\";" +
+ $"{Name}Cloumn.HeaderText =\"{IsNullable}\";" +
+ $"{Name}Cloumn.DataPropertyName = \"{Name}\";" +
+ $"cols.Add({Name}Cloumn);\n\n";
+ }
+ textBox1.Text += "DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();\r\n" +
+ "editBtn.HeaderText = \"编辑\";\r\n" +
+ "editBtn.Name = \"editBtn\";\r\n" +
+ "editBtn.Text = \"编辑\";\r\n" +
+ "editBtn.UseColumnTextForButtonValue = true;\r\n" +
+ "editBtn.Frozen = true;\n";
+ textBox1.Text += " DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();\r\n" +
+ "addBtn.HeaderText = \"新增\";\r\n" +
+ "addBtn.Name = \"addBtn\";\r\n" +
+ "addBtn.Text = \"新增\";\r\n" +
+ "addBtn.UseColumnTextForButtonValue = true;\r\n" +
+ "addBtn.Frozen = true;\n ";
+ textBox1.Text += "cols.Add(editBtn);\n cols.Add(addBtn);\n";
+ textBox1.Text += "if (cols.Last().Frozen)\r\n" +
+ "{\r\n " +
+ $"this.{uidatagridview}.RightToLeft = RightToLeft.Yes;\r\n" +
+ "cols.Reverse();\r\n" +
+ "}\r\n" +
+ $"this.{uidatagridview}.Columns.AddRange(cols.ToArray());\r\n\r\n" +
+ $"if (this.{uidatagridview}.Columns.Count > 0)\r\n" +
+ $"this.{uidatagridview}.FirstDisplayedScrollingColumnIndex = this.{uidatagridview}.Columns.Count - 2;\n";
+ textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
+ textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
+ textBox1.Text += $"this.{uidatagridview}.DataSource = data;\n";
+ if (list.Count > 0)
+ {
+ textBox1.Text += $@"
+ DateTimePicker dtp = new DateTimePicker();
+ convertBeginDgv.Controls.Add(dtp);
+ dtp.Visible = false;
+ dtp.TextChanged += (sender, e) => convertBeginDgv.CurrentCell.Value = dtp.Value.ToString(""yyyy-MM-dd"");
+ dtp.CloseUp += (sender, e) => dtp.Visible = false;
+ convertBeginDgv.CellClick += (sender, e) => {{
+ if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
+ DataGridView dgv = (sender as DataGridView);
+ if (new List() {{
+ {DbUtil.joinList(list)}
+ }}.Contains(dgv.Columns[e.ColumnIndex].Name))
+ {{
+ var _Recatngle = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
+ dtp.Size = _Recatngle.Size;
+ dtp.Location = _Recatngle.Location;
+ dtp.Visible = true;
+ }}
+ else dtp.Visible = false;
+ }};
+ convertBeginDgv.Scroll += (sender, e) => dtp.Visible = false;
+ convertBeginDgv.SizeChanged += (sender, e) => {{ if (dtp.Visible) dtp.Visible = false; }};";
+ }
+
+ }*/
+ /* private void fillDgv2Str()
+ {
+ string tbname = txt_tablename.Text.Trim();//要生成的表名
+ if (tbname.Equals("请选择") || tbname.Equals(""))
+ {
+ MessageBox.Show("请选择表");
+ return;
+ };
+ DataTable dt = null;
+ if (textBox3.Text.Trim() == "")
+ {
+ dt = DbUtil.GetDbTableInfo(tbname);
+ }
+ else
+ {
+ dt = DbHelperMySQL.Query(textBox3.Text.Trim());
+ }
+ string uidatagridview = textBox2.Text.Trim();
+ textBox1.Text = $"this.{uidatagridview}.AutoGenerateColumns = false;";
+ textBox1.Text += $" string sql = $\"SELECT column_name, column_comment from information_schema.COLUMNS where table_name = '{tbname}' ORDER BY ORDINAL_POSITION; \";\r\n" +
+ $" DataTable dt = DbHelperMySQL.Query(sql);\n";
+ textBox1.Text += "List cols = new List();\n";
+ textBox1.Text += "for (int i = 0; i < dt.Rows.Count; i++){\n" +
+ " DataGridViewTextBoxColumn temp = new DataGridViewTextBoxColumn();\n" +
+ "temp.Name = dt.Rows[i][0].ToString();\n" +
+ "temp.HeaderText = dt.Rows[i][1].ToString();\n" +
+ "temp.DataPropertyName= dt.Rows[i][0].ToString();\n" +
+ "cols.Add(temp);" +
+ "}\n";
+ textBox1.Text += "DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();\r\n" +
+ "editBtn.HeaderText = \"编辑\";\r\n" +
+ "editBtn.Name = \"editBtn\";\r\n" +
+ "editBtn.Text = \"编辑\";\r\n" +
+ "editBtn.UseColumnTextForButtonValue = true;\r\n" +
+ "editBtn.Frozen = true;\n";
+ textBox1.Text += " DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();\r\n" +
+ "addBtn.HeaderText = \"新增\";\r\n" +
+ "addBtn.Name = \"addBtn\";\r\n" +
+ "addBtn.Text = \"新增\";\r\n" +
+ "addBtn.UseColumnTextForButtonValue = true;\r\n" +
+ "addBtn.Frozen = true;\n ";
+ textBox1.Text += "cols.Add(editBtn);\n cols.Add(addBtn);\n";
+ textBox1.Text += "if (cols.Last().Frozen)\r\n" +
+ "{\r\n " +
+ $"this.{uidatagridview}.RightToLeft = RightToLeft.Yes;\r\n" +
+ "cols.Reverse();\r\n" +
+ "}\r\n" +
+ $"this.{uidatagridview}.Columns.AddRange(cols.ToArray());\r\n\r\n" +
+ $"if (this.{uidatagridview}.Columns.Count > 0)\r\n" +
+ $"this.{uidatagridview}.FirstDisplayedScrollingColumnIndex = this.{uidatagridview}.Columns.Count - 2;\n";
+ textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
+ textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
+ textBox1.Text += $"this.{uidatagridview}.DataSource = data;\n";
+ }*/
+
+ /*private void fillDgv1Str()
+ {
+ string tbname = txt_tablename.Text.Trim();//要生成的表名
+ if (tbname.Equals("请选择") || tbname.Equals(""))
+ {
+ MessageBox.Show("请选择表");
+ return;
+ };
+ DataTable dt = null;
+ if (textBox3.Text.Trim() == "")
+ {
+ dt = DbUtil.GetDbTableInfo(tbname);
+ }
+ else
+ {
+ dt = DbHelperMySQL.Query(textBox3.Text.Trim());
+ }
+ string uidatagridview = textBox2.Text.Trim();
+ textBox1.Text = "";
+ textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
+ textBox1.Text += "this." + uidatagridview + ".DataSource = new BindingSource {DataSource = data};\n";
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ var Name = dt.Rows[i]["Name"].ToString();
+ textBox1.Text += $"var {Name}Column = {uidatagridview}.Columns[\"{Name}\"];\n";
+ }
+
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ var Name = dt.Rows[i]["Name"].ToString();
+ var IsNullable = dt.Rows[i]["COMMENT"].ToString();
+ textBox1.Text += $"{Name}Column.HeaderText = \"{IsNullable}\";\n";
+ }
+
+ textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
+ textBox1.Text += $" {uidatagridview}.AutoGenerateColumns = true;\n";
+ }*/
+
+ /* private void fillModelStr()
+ {
+ //string constr = txt_constr.Text.Trim();//数据库链接字符串
+ txt_ret.Text = "";
+ string tbname = txt_tablename.Text.Trim();//要生成的表名
+ if (tbname.Equals("请选择") || tbname.Equals(""))
+ {
+ MessageBox.Show("请选择表");
+ return;
+ };
+ string namespaceName = namespace_name.Text.Trim();
+ DataTable dt = null;
+ if (textBox3.Text.Trim() == "")
+ {
+ dt = DbUtil.GetDbTableInfo(tbname);
+ }
+ else
+ {
+ dt = DbHelperMySQL.Query(textBox3.Text.Trim());
+ }
+ var infoStr = "";
+ infoStr += "using System;\n" +
+ "using NCA_MES_Models.CommonUtils.DB.DBAttribute;\n\n";
+ infoStr += $"namespace {namespaceName} \n{{\n\n";
+ infoStr += "\t/// " + "\n" +
+ $"\t/// {DbUtil.GetTableComment(tbname)}\n" +
+ "\t/// " + "\n" +
+ $"\t[TableName(\"{tbname}\")]\n" +
+ $"\tpublic class {DbUtil.GenerateClassName(tbname)}: DBBaseModel<{DbUtil.GenerateClassName(tbname)}>\n\t{{";
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ var Name = dt.Rows[i]["Name"].ToString();
+ var Type = dt.Rows[i]["Type"].ToString();
+ var IsNullable = dt.Rows[i]["COMMENT"].ToString();
+ var KeyType = dt.Rows[i]["KeyType"].ToString();
+ var Nullable = dt.Rows[i]["Nullable"].ToString();
+ Type type = DbUtil.DbTypeStr_To_CsharpType(Type);
+ infoStr += "\t\n\n\t" + "/// " +
+ "\t\n\t" + $"///{IsNullable}" +
+ "\t\n\t" + "/// " +
+ (String.IsNullOrEmpty(KeyType) ? "" : "\n\t[TableId]") +
+ (String.IsNullOrEmpty(KeyType) && !("NULL".Equals(Nullable)) ? "\n\t[NotEmpty]" : "") +
+ "\t\n\t" + $"[TableField(\"{Name}\",\"{IsNullable}\")]" +
+ "\t\n\t" + $"public {type.Name} {DbUtil.ToCamelCase(Name)} {{ get; set; }}";
+ //加注释记得引用using
+ }
+ infoStr += "\n\t}";
+ infoStr += "\n}";
+ this.txt_ret.Text = infoStr;
+ DbUtil.openFile(tbname, infoStr);
+ }*/
+ }
+}
diff --git a/DatabasetoEntityclass/packages.config b/DatabasetoEntityclass/packages.config
new file mode 100644
index 0000000..4139890
--- /dev/null
+++ b/DatabasetoEntityclass/packages.config
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file