.net代码生成器自动生成DAL和BLL类库
时间:2010-12-16 来源:水淼
}
cbbDateBaseName.SelectedIndex = 0;
}
}
/// <summary>
/// 生成数据访问层
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDAL_Click(object sender, EventArgs e)
{
classNameLastTag = "Service";
string sql = "SELECT * FROM " + cboDataTable.Text;
if (cboDataTable.Text == "")
{
MessageBox.Show("请选择要生成的表");
return;
}
StringBuilder sb = new StringBuilder();
using (SqlDataReader reader = DBHelper.ExecuteReader(String.Format(DBHelper.CONNSTRING, cbbDateBaseName.Text), CommandType.Text, sql, null))
{
sb.AppendLine("using System;");
sb.AppendLine("using System.Collections.Generic;");
sb.AppendLine("using System.Linq;");
sb.AppendLine("using System.Text;");
sb.AppendLine("using " + cbbDateBaseName.Text + ".Model;");
sb.AppendLine("using System.Data.SqlClient;");
sb.AppendLine("using System.Data");
sb.AppendLine("namespace " + cbbDateBaseName.Text + ".DAL");
sb.AppendLine("{");
sb.AppendLine("\tpublic class " + cboDataTable.Text + "Service");
sb.AppendLine("\t{");
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///得到" + cboDataTable.Text + "数据进行分页");
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///<param name=\"pageSize\"></param>");
sb.AppendLine("\t\t///<param name=\"pageIndex\"></param>");
sb.AppendLine("\t\tpublic static IList<" + cboDataTable.Text + "> GetAll" + cboDataTable.Text + "(int pageSize, int pageIndex)");
sb.AppendLine("\t\t{");
sb.AppendLine("\t\t\tpageIndex--");
sb.AppendLine("\t\t\tIList<" + cboDataTable.Text + "> list =new List<" + cboDataTable.Text + ">();");
sb.AppendLine("\t\t\tstring sql=\"select top (@pageSize) * from " + cboDataTable.Text + " where Id not in(select top (@pageSize*@pageIndex) Id from " + cboDataTable.Text + " order by id desc) order by id desc;\"");
sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
sb.AppendLine("\t\t\t{");
sb.AppendLine("\t\t\t\tnew SqlParameter(\"@pageSize\",pageSize),");
sb.AppendLine("\t\t\t\tnew SqlParameter(\"@pageIndex\",pageIndex)");
sb.AppendLine("\t\t\t};");
sb.AppendLine("\t\t\tusing (SqlDataReader reader = DBHelper.ExecuteReader(DBHelper.CONNSTRING, CommandType.Text, sql,pare)");
sb.AppendLine("\t\t\t{");
sb.AppendLine("\t\t\t\twhile (reader.Read())");
sb.AppendLine("\t\t\t\t{");
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text + " " + cboDataTable.Text.ToLower() + " = new " + cboDataTable.Text + "();");
for (int i = 0; i < reader.FieldCount; i++)
{
if (reader.GetFieldType(i).ToString() == "System.Int32")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToInt32(reader[\"" + reader.GetName(i) + "\"]);");
}
else if (reader.GetFieldType(i).ToString() == "System.String")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = reader[\"" + reader.GetName(i) + "\"].ToString();");
}
else if (reader.GetFieldType(i).ToString() == "System.DateTime")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToDateTime(reader[\"" + reader.GetName(i) + "\"]);");
}
else if (reader.GetFieldType(i).ToString() == "System.Boolean")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToBoolean(reader[\"" + reader.GetName(i) + "\"]);");
}
else if (reader.GetFieldType(i).ToString() == "System.Byte[]")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToByte(reader[\"" + reader.GetName(i) + "\"]);");
}
else if (reader.GetFieldType(i).ToString() == "System.Double")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToDouble(reader[\"" + reader.GetName(i) + "\"]);");
}
}
sb.AppendLine("\t\t\t\t\tlist.Add(" + cboDataTable.Text.ToLower() + ");");
sb.AppendLine("\t\t\t\t}");
sb.AppendLine("\t\t\t\treturn list;");
sb.AppendLine("\t\t\t}");
sb.AppendLine("\t\t}\n\n");
//通过Id得到对象
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///得到" + cboDataTable.Text + "对象信息通过Id");
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///<param name=\"Id\"></param>");
sb.AppendLine("\t\tpublic static "+cboDataTable.Text+" Get" + cboDataTable.Text + "ById(int Id)");
sb.AppendLine("\t\t{");
sb.AppendLine("\t\t\t sting sql=\"select * from " + cboDataTable.Text + " where Id=@Id;\"");
sb.AppendLine("\t\t\t " + cboDataTable.Text + " " + cboDataTable.Text.ToLower() + "=null;");
sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
sb.AppendLine("\t\t\t{");
sb.AppendLine("\t\t\t\tnew SqlParameter(\"@Id\",Id)");
sb.AppendLine("\t\t\t};");
sb.AppendLine("\t\t\tusing (SqlDataReader reader = DBHelper.ExecuteReader(DBHelper.CONNSTRING, CommandType.Text, sql,pare)");
sb.AppendLine("\t\t\t{");
sb.AppendLine("\t\t\t\tif (reader.Read())");
sb.AppendLine("\t\t\t\t{");
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + " = new " + cboDataTable.Text + "();");
for (int i = 0; i < reader.FieldCount; i++)
{
if (reader.GetFieldType(i).ToString() == "System.Int32")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToInt32(reader[\"" + reader.GetName(i) + "\"]);");
}
else if (reader.GetFieldType(i).ToString() == "System.String")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = reader[\"" + reader.GetName(i) + "\"].ToString();");
}
else if (reader.GetFieldType(i).ToString() == "System.DateTime")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToDateTime(reader[\"" + reader.GetName(i) + "\"]);");
}
else if (reader.GetFieldType(i).ToString() == "System.Boolean")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToBoolean(reader[\"" + reader.GetName(i) + "\"]);");
}
else if (reader.GetFieldType(i).ToString() == "System.Byte[]")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToByte(reader[\"" + reader.GetName(i) + "\"]);");
}
else if (reader.GetFieldType(i).ToString() == "System.Double")
{
sb.AppendLine("\t\t\t\t\t" + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + " = Convert.ToDouble(reader[\"" + reader.GetName(i) + "\"]);");
}
}
sb.AppendLine("\t\t\t\t}");
sb.AppendLine("\t\t\t\treturn " + cboDataTable.Text.ToLower() + ";");
sb.AppendLine("\t\t\t}");
sb.AppendLine("\t\t}");
//更改
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///更改" + cboDataTable.Text + "信息通过Id");
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///<param name=\""+cboDataTable.Text+"\"></param>");
sb.AppendLine("\t\tpublic static int Update" + cboDataTable.Text + "ById("+cboDataTable.Text+" "+cboDataTable.Text.ToLower()+")");
sb.AppendLine("\t\t{");
sb.Append("\t\t\tstring sql =\"update " + cboDataTable.Text + " set "+reader.GetName(1)+"=@"+reader.GetName(1));
for (int i = 2; i < reader.FieldCount; i++)
{
sb.Append(","+reader.GetName(i)+"=@"+reader.GetName(i));
}
sb.AppendLine(" where Id=@Id;");
sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
sb.AppendLine("\t\t\t{");
for (int i = 0; i < reader.FieldCount; i++)
{
sb.AppendLine("\t\t\t\tnew SqlParameter(\"@" + reader.GetName(i) + "\","+cboDataTable.Text.ToLower()+"."+reader.GetName(i)+"),");
}
sb.AppendLine("\t\t\t};");
sb.AppendLine("\t\t\treturn Convert.ToInt32(DBHelper.ExecuteNonQuery(DBHelper.CONNSTRING, CommandType.Text, sql, para));");
sb.AppendLine("\t\t}");
//添加
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///添加" + cboDataTable.Text + "信息");
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///<param name=\"" + cboDataTable.Text + "\"></param>");
sb.AppendLine("\t\tpublic static int Insert" + cboDataTable.Text + "(" + cboDataTable.Text +" "+cboDataTable.Text.ToLower()+")");
sb.AppendLine("\t\t{");
sb.Append("\t\t\tstring sql =\"Insert into " + cboDataTable.Text + " ( " + reader.GetName(1));
for (int i = 2; i < reader.FieldCount; i++)
{
sb.Append("," + reader.GetName(i));
}
sb.Append(") values ( @"+reader.GetName(1)+"");
for (int i = 2; i < reader.FieldCount; i++)
{
sb.Append(",@" + reader.GetName(i));
}
sb.AppendLine(");");
sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
sb.AppendLine("\t\t\t{");
for (int i = 1; i < reader.FieldCount; i++)
{
sb.AppendLine("\t\t\t\tnew SqlParameter(\"@" + reader.GetName(i) + "\"," + cboDataTable.Text.ToLower() + "." + reader.GetName(i) + "),");
}
sb.AppendLine("\t\t\t};");
sb.AppendLine("\t\t\treturn Convert.ToInt32(DBHelper.ExecuteNonQuery(DBHelper.CONNSTRING, CommandType.Text, sql, para));");
sb.AppendLine("\t\t}");
//删除对象
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///删除" + cboDataTable.Text + "信息通过Id");
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///<param name=Id></param>");
sb.AppendLine("\t\tpublic static int Delete" + cboDataTable.Text + "ById(int Id)");
sb.AppendLine("\t\t{");
sb.AppendLine("\t\t\t string sql =delete "+cboDataTable.Text+" where Id=@Id;");
sb.AppendLine("\t\t\tSqlParameter[] pare = new SqlParameter[] ");
sb.AppendLine("\t\t\t{");
sb.AppendLine("\t\t\t\tnew SqlParameter(\"@Id\",Id)");
sb.AppendLine("\t\t\t};");
sb.AppendLine("\t\t\treturn Convert.ToInt32(DBHelper.ExecuteNonQuery(DBHelper.CONNSTRING, CommandType.Text, sql, para));");
sb.AppendLine("\t\t}");
//批量删除对象
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///删除" + cboDataTable.Text + "信息通过Id");
sb.AppendLine("\t\t///<summary>");
sb.AppendLine("\t\t///<param name=Id></param>");
sb.AppendLine("\t\tpublic static int Delete" + cboDataTable.Text + "ById(string Id)");
sb.AppendLine("\t\t{");
sb.AppendLine("\t\t\t string sql =delete " + cboDataTable.Text + " where Id in (\"+Id+\");");
sb.AppendLine("\t\t\treturn Convert.ToInt32(DBHelper.ExecuteNonQuery(DBHelper.CONNSTRING, CommandType.Text, sql, para));");
sb.AppendLine("\t\t}");
}
sb.AppendLine("\t}");
sb.AppendLine("}");
rtb.Text = sb.ToString();
}
/// <summary>
/// 生成业务逻辑层
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnBLL_Click(object sender, EventArgs e)
{
classNameLastTag = "Mananger";
if (cboDataTable.Text == "")
{
MessageBox.Show("请选择要生成的表");
return;
}
}
/// <summary>
/// 生成实体类
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnModule_Click(object sender, EventArgs e)
{
classNameLastTag = "";
if (cboDataTable.Text == "")
{
MessageBox.Show("请选择要生成的表");
return;
}
string sql = "SELECT * FROM " + cboDataTable.Text;
StringBuilder sb = new StringBuilder();
using (SqlDataReader reader = DBHelper.ExecuteReader(String.Format(DBHelper.CONNSTRING, cbbDateBaseName.Text), CommandType.Text, sql, null))
{
sb.AppendLine("using System;");
sb.AppendLine("using System.Collections.Generic;");
sb.AppendLine("using System.Linq;");
sb.AppendLine("using System.Text;");
sb.AppendLine("namespace " + cbbDateBaseName.Text + ".Model");
sb.AppendLine("\t{");
sb.AppendLine("\t \t[Serializable]");
sb.AppendLine("\t\tpublic class " + cboDataTable.Text + "");
sb.AppendLine("\t\t{");
for (int i = 0; i < reader.FieldCount; i++)
{
sb.AppendLine("\t\t\tpublic " + reader.GetFieldType(i) + " " + reader.GetName(i) + " { get; set; }");
}
sb.AppendLine("\t\t}");
sb.AppendLine("\t}");
rtb.Text = sb.ToString();
}
}
private void cbbDateBaseName_SelectedValueChanged(object sender, EventArgs e)
{
cboDataTable.Items.Clear();
string sql = "SELECT Name FROM SysObjects Where XType='U'";
using (SqlDataReader reader = DBHelper.ExecuteReader(String.Format(DBHelper.CONNSTRING, cbbDateBaseName.Text), CommandType.Text, sql, null))
{
while (reader.Read())
{
cboDataTable.Items.Add(reader["Name"].ToString());
}
}
if (cboDataTable.Items.Count != 0)
{
cboDataTable.SelectedIndex = 0;
}
else
{
cboDataTable.Text = "";
}
}
private void btnUpload_Click(object sender, EventArgs e)
{
FolderDialog f = new FolderDialog();
if (f.DisplayDialog() != DialogResult.OK)
{
return;
}
else
{
try
{
FileStream nFile = new FileStream(f.Path + "" + cboDataTable.Text + classNameLastTag + ".cs", FileMode.CreateNew);
StreamWriter writer = new StreamWriter(nFile);
writer.WriteLine(rtb.Text);
writer.Close();
MessageBox.Show("类库生成成功!!!");
}
catch
{
MessageBox.Show("出错了");
}
}
}
private void cbbDateBaseName_SelectedIndexChanged(object sender, EventArgs e)
{
cboDataTable.Items.Clear();
string sql = "SELECT Name FROM SysObjects Where XType='U'";
using (SqlDataReader reader = DBHelper.ExecuteReader(String.Format(DBHelper.CONNSTRING, cbbDateBaseName.Text), CommandType.Text, sql, null))
{
while (reader.Read())
{
cboDataTable.Items.Add(reader["Name"].ToString());
}
}
if (cboDataTable.Items.Count != 0)
{
cboDataTable.SelectedIndex = 0;
}
else
{
cboDataTable.Text = "";
}
}
}