/// <summary> /// 得到工厂层代码 /// </summary> /// <param name="param"></param> /// <returns></returns> public string GetFactoryClass(CodeCreate param) { Servers server = Common.Config.GetServer(param.ServerID); if (server == null) { return(string.Empty); } List <Fields> fields = databaseInstance.GetFields(server.ID, param.DbName, param.TableName); StringBuilder factory = new StringBuilder(import.GetImport_Factory()); factory.Append("namespace " + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Factory + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "\r\n"); factory.Append("{\r\n"); factory.Append("\tpublic class " + param.ClassName + "\r\n"); factory.Append("\t{\r\n"); factory.Append("\t\t/// <summary>\r\n"); factory.Append("\t\t/// 创建实例对象\r\n"); factory.Append("\t\t/// </summary>\r\n"); factory.Append("\t\tpublic static " + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Interface + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + ".I" + param.ClassName + " CreateInstance()\r\n");; factory.Append("\t\t{\r\n"); factory.Append("\t\t\treturn Factory.CreateInstance(\"" + param.ClassName + "\") as " + param.CNSC.Interface + ".I" + param.ClassName + ";\r\n"); factory.Append("\t\t}\r\n"); factory.Append("\t}\r\n"); factory.Append("}\r\n"); return(factory.ToString()); }
/// <summary> /// 得到实体层 /// </summary> /// <param name="param"></param> /// <returns></returns> public string GetModelClass(CodeCreate param) { Servers server = Config.GetServer(param.ServerID); if (server == null) { return(string.Empty); } List <Fields> fields = databaseInstance.GetFields(server.ID, param.DbName, param.TableName); StringBuilder model = new StringBuilder(import.GetImport_Model()); model.Append("namespace " + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Model + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "\r\n"); model.Append("{\r\n"); model.Append("\t[Serializable]\r\n"); model.Append("\tpublic class " + param.ClassName + "\r\n"); model.Append("\t{\r\n"); foreach (var field in fields) { model.Append("\t\t/// <summary>\r\n"); model.Append("\t\t/// " + (string.IsNullOrEmpty(field.Note) ? field.Name : field.Note) + "\r\n"); model.Append("\t\t/// </summary>\r\n"); model.Append("\t\t[DisplayName(\"" + (string.IsNullOrEmpty(field.Note) ? field.Name : field.Note) + "\")]\r\n"); model.Append("\t\tpublic " + field.DotNetType + " " + field.Name + " { get; set; }\r\n\r\n"); } model.Append("\t}\r\n"); model.Append("}\r\n"); return(model.ToString()); }
public IActionResult Create(int id) { var model = new CodeCreate { DirectoryId = id, }; return(View(model)); }
public IActionResult Create(CodeCreate model) { if (ModelState.IsValid) { codeService.Create(model); return(RedirectToAction("Index", "Directory", new { id = model.DirectoryId })); } return(View(model)); }
/// <summary> /// 生成代码条件 /// </summary> /// <returns></returns> public CodeCreate GetCodeCreateSources() { TreeNode dbNode = node.Parent.Parent; TreeNode serverNode = Home.form_Database.GetRoot(node); if (dbNode == null || serverNode == null) { return(null); } List <BuilderMethods> methods = new List <BuilderMethods>(); if (checkBox_add.Checked) { methods.Add(BuilderMethods.Add); } if (checkBox_count.Checked) { methods.Add(BuilderMethods.Count); } if (checkBox_delete.Checked) { methods.Add(BuilderMethods.Delete); } if (checkBox_exists.Checked) { methods.Add(BuilderMethods.Exists); } if (checkBox_getall.Checked) { methods.Add(BuilderMethods.SelectAll); } if (checkBox_getbykey.Checked) { methods.Add(BuilderMethods.SelectByKey); } if (checkBox_update.Checked) { methods.Add(BuilderMethods.Update); } Servers server = (Servers)((TreeNodeTag)serverNode.Tag).Tag; CodeCreate param = new CodeCreate(); param.ClassName = this.textBox2.Text == null ? ((TreeNodeTag)node.Tag).Tag.ToString() : this.textBox2.Text.Trim(); param.DbName = ((TreeNodeTag)dbNode.Tag).Tag.ToString(); param.NameSpace = ""; param.NameSpace1 = ""; param.ServerID = server.ID; param.TableName = ((TreeNodeTag)node.Tag).Tag.ToString(); param.BuilderType = this.radioButton1.Checked ? BuilderType.Default : BuilderType.Factory; param.MethodList = methods; param.CNSC = new Config_NameSpaceClass().GetDefault(); param.dataBaseType = server.Type; return(param); }
public void Create(CodeCreate model) { model.Id = null; var dbCode = mapper.Map <Code>(model); dbCode.CodeHashtags = ParseCodeHashtags <CodeHashtag>(model.Hashtag); foreach (var note in dbCode.Notes) { note.CodeNoteHashtags = ParseCodeHashtags <CodeNoteHashtag>(note.Hashtags); } context.Code.Add(dbCode); context.SaveChanges(); }
private void GenerateEnums() { CodeCreate oCodeCreate = new CodeCreate(); oCodeCreate.CreateNamespaceAndClass("CodeDOM", "MyClass", TypeAttributes.Public | TypeAttributes.Abstract); List <string> oList = new List <string>(); oList.Add("Car"); oList.Add("Bus"); oList.Add("Limo"); oList.Add("Tank"); oCodeCreate.AddEnum("Vehicles", oList); oCodeCreate.GenerateCode(@"c:\temp\SampleCode.cs", "CSharp"); }
private void GenerateCode() { CodeCreate oCodeCreate = new CodeCreate(); oCodeCreate.CreateNamespaceAndClass("CodeDOM", "MyClass", TypeAttributes.Public | TypeAttributes.Abstract); oCodeCreate.AddConstructor(); oCodeCreate.AddField(MemberAttributes.Private, "_szCustomerName", "Name of the customer", "System.String"); oCodeCreate.AddField(MemberAttributes.Private, "_iSalesRepID", "Primary key ID of sales rep", "System.Int32"); oCodeCreate.AddProperty(MemberAttributes.Public | MemberAttributes.Final, "CustomerName", "Comment goes here", "System.String", true, true, "_szCustomerName"); oCodeCreate.AddMethod(MemberAttributes.Public, "DeleteCustomer", "Executes SQL that deletes a customer", "System.Void"); oCodeCreate.GenerateCode(@"c:\temp\SampleCode.cs", "CSharp"); MessageBox.Show(@"Code exported to c:\temp\SampleCode.cs"); }
public void AutoCode() { try { #region 代码自动生成 string t = "\t"; string tt = t + t; string ttt = t + t + t; StringBuilder sw = new StringBuilder(); StringBuilder db = new StringBuilder(); TreeNode dbNode = node.Parent.Parent; TreeNode serverNode = Home.form_Database.GetRoot(node); if (dbNode == null || serverNode == null) { return; } Servers server = (Servers)((TreeNodeTag)serverNode.Tag).Tag; CodeCreate param = new CodeCreate(); param.ClassName = ((TreeNodeTag)node.Tag).Tag.ToString(); param.DbName = ((TreeNodeTag)dbNode.Tag).Tag.ToString(); param.ServerID = server.ID; param.TableName = ((TreeNodeTag)node.Tag).Tag.ToString(); string sql = " use " + param.DbName + "; select name,type_name(user_type_id)as typeid from sys.columns where " + " object_id=(select object_id from sys.tables where name='" + param.TableName + "') "; DataTable dt1 = Database.GetDataTable(sql, param.ServerID, param.DbName); #region 实体类 #region 实体类头部 sw.Append("using System;" + Environment.NewLine); sw.Append("using System.Collections.Generic;" + Environment.NewLine); sw.Append("using System.Linq;" + Environment.NewLine); sw.Append("using System.Text;" + Environment.NewLine); sw.Append("namespace " + getdaxie(param.DbName + Environment.NewLine)); sw.Append(t + "{" + Environment.NewLine); sw.Append(tt + "public class " + param.TableName + Environment.NewLine); sw.Append(ttt + "{" + Environment.NewLine); #endregion #region 实体类主体生成 foreach (DataRow line1 in dt1.Rows) { sw.Append(ttt + "private " + Database.GetFieldSqlType(line1["typeid"].ToString()) + " _" + getdaxie(line1["name"].ToString()) + ";" + Environment.NewLine); sw.Append(ttt + "public " + Database.GetFieldSqlType(line1["typeid"].ToString()) + " " + getdaxie(line1["name"].ToString()) + Environment.NewLine); sw.Append(ttt + "{" + Environment.NewLine); sw.Append(ttt + t + "get { return _" + getdaxie(line1["name"].ToString()) + "; }" + Environment.NewLine); sw.Append(ttt + t + " set { _" + getdaxie(line1["name"].ToString()) + " = value; }" + Environment.NewLine); sw.Append(ttt + "}" + Environment.NewLine); } sw.Append(tt + "}" + Environment.NewLine); sw.Append(t + "}" + Environment.NewLine); #endregion #endregion #region DBHelp db.Append("using System;" + Environment.NewLine); db.Append("using System.Collections.Generic;" + Environment.NewLine); db.Append("using System.Linq;" + Environment.NewLine); db.Append("using System.Text;" + Environment.NewLine); db.Append("using System.Data;" + Environment.NewLine); db.Append("using System.Data.SqlClient;" + Environment.NewLine); db.Append("using System.Configuration;" + Environment.NewLine); db.Append("namespace " + getdaxie(param.TableName) + Environment.NewLine); db.Append(t + "{" + Environment.NewLine); db.Append(tt + "public class " + getdaxie("DBHelpe") + Environment.NewLine); db.Append(tt + "{" + Environment.NewLine); db.Append(ttt + "private static SqlConnection con;" + Environment.NewLine); db.Append(ttt + "/// <summary>" + Environment.NewLine); db.Append(ttt + " ///获得connection " + Environment.NewLine); db.Append(ttt + "/// </summary>" + Environment.NewLine); db.Append(ttt + "public static SqlConnection GetCon()" + Environment.NewLine); db.Append(ttt + "{" + Environment.NewLine); db.Append(ttt + t + "string connectionString = ConfigurationManager.ConnectionStrings[\"url\"].ConnectionString;" + Environment.NewLine); db.Append(ttt + t + "if (con == null)" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + t + "con = new SqlConnection(connectionString);" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + t + "return con;" + Environment.NewLine); db.Append(ttt + "}" + Environment.NewLine); db.Append(ttt + "/// <summary>" + Environment.NewLine); db.Append(ttt + "/// 执行增、删、改操作" + Environment.NewLine); db.Append(ttt + "/// </summary>" + Environment.NewLine); db.Append(ttt + "/// <param name=sql>SQL语句</param>" + Environment.NewLine); db.Append(ttt + "/// <returns>受影响行数</returns>" + Environment.NewLine); db.Append(ttt + "public static int ExecuteSql(string sql)" + Environment.NewLine); db.Append(ttt + "{" + Environment.NewLine); db.Append(ttt + t + "int i = -1;" + Environment.NewLine); db.Append(ttt + t + "SqlConnection con = DBHelpe.GetCon();" + Environment.NewLine); db.Append(ttt + t + "SqlCommand cmd = new SqlCommand(sql, con);" + Environment.NewLine); db.Append(ttt + t + "try" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + tt + "con.Open();" + Environment.NewLine); db.Append(ttt + tt + "i = cmd.ExecuteNonQuery();" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + t + "catch (Exception err)" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + tt + "throw err;" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + t + "finally" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + tt + "if (con.State == ConnectionState.Open)" + Environment.NewLine); db.Append(ttt + tt + "{" + Environment.NewLine); db.Append(ttt + tt + "con.Close();" + Environment.NewLine); db.Append(ttt + tt + "}" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + t + "return i;" + Environment.NewLine); db.Append(ttt + "}" + Environment.NewLine); db.Append(ttt + "/// <summary>" + Environment.NewLine); db.Append(ttt + "/// 根据SQL返回DataTable" + Environment.NewLine); db.Append(ttt + "/// </summary>" + Environment.NewLine); db.Append(ttt + "/// <param name=sql>执行的SQL</param>" + Environment.NewLine); db.Append(ttt + "/// <returns>DataTable</returns>" + Environment.NewLine); db.Append(ttt + "public static DataTable GetTable(string sql)" + Environment.NewLine); db.Append(ttt + "{" + Environment.NewLine); db.Append(ttt + t + "DataTable dt =new DataTable();" + Environment.NewLine); db.Append(ttt + t + "SqlConnection con = DBHelpe.GetCon();" + Environment.NewLine); db.Append(ttt + t + "try" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + tt + "con.Open();" + Environment.NewLine); db.Append(ttt + tt + "SqlCommand cmd = new SqlCommand(sql, con);" + Environment.NewLine); db.Append(ttt + tt + "SqlDataAdapter da = new SqlDataAdapter(cmd);" + Environment.NewLine); db.Append(ttt + tt + "da.Fill(dt);" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + t + "catch (Exception err)" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + tt + "throw err;" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + t + "finally" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + tt + "if (con.State == ConnectionState.Open)" + Environment.NewLine); db.Append(ttt + tt + "{" + Environment.NewLine); db.Append(ttt + ttt + "con.Close();" + Environment.NewLine); db.Append(ttt + tt + "}" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + t + "return dt;" + Environment.NewLine); db.Append(ttt + "}" + Environment.NewLine); db.Append(ttt + "/// <summary>" + Environment.NewLine); db.Append(ttt + "/// 执行SQL返回SqlDataReader" + Environment.NewLine); db.Append(ttt + "/// </summary>" + Environment.NewLine); db.Append(ttt + "/// <param name=sql>执行的SQL</param>" + Environment.NewLine); db.Append(ttt + "/// <returns>SqlDataReader</returns>" + Environment.NewLine); db.Append(ttt + "public static SqlDataReader ExReader(string sql)" + Environment.NewLine); db.Append(ttt + "{" + Environment.NewLine); db.Append(ttt + t + "SqlConnection con = DBHelpe.GetCon();" + Environment.NewLine); db.Append(ttt + t + "try" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + tt + "con.Open();" + Environment.NewLine); db.Append(ttt + tt + "SqlCommand cmd = new SqlCommand(sql, con);" + Environment.NewLine); db.Append(ttt + tt + "SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);" + Environment.NewLine); db.Append(ttt + tt + "return dr;" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + t + "catch(Exception err)" + Environment.NewLine); db.Append(ttt + t + "{" + Environment.NewLine); db.Append(ttt + tt + "throw err;" + Environment.NewLine); db.Append(ttt + t + "}" + Environment.NewLine); db.Append(ttt + "}" + Environment.NewLine); //**************************************************************** db.Append(t + "}" + Environment.NewLine); db.Append("}" + Environment.NewLine); #endregion Form_Code_Area fca_model = new Form_Code_Area(sw.ToString(), string.Format("实体类({0})", param.TableName)); fca_model.Show(Home.Instance.dockPanel1); Form_Code_Area fca_data = new Form_Code_Area(db.ToString(), string.Format("数据类({0})", param.TableName)); fca_data.Show(Home.Instance.dockPanel1); #endregion } catch (Exception err) { MessageBox.Show(err.Message); } this.Close(); }
private void CreateToDir() { List <TreeNode> NodeList = Main.form_DataBase.GetTreeViewSelected(); if (NodeList.Count == 0) { return; } TreeNode serverNode = Main.form_DataBase.GetRoot(NodeList.First()); TreeNode dbNode = NodeList.First().Parent.Parent; List <BuilderMethods> methods = new List <BuilderMethods>(); if (configDir_cb_Add.Checked) { methods.Add(BuilderMethods.Add); } if (configDir_cb_GetAll.Checked) { methods.Add(BuilderMethods.SelectAll); } Servers server = (Servers)((TreeNodeTag)serverNode.Tag).Tag; Business.CreateCode CreateCode = new Business.CreateCode(server.Type); CodeCreate param = new CodeCreate(); param.DbName = ((TreeNodeTag)dbNode.Tag).Tag.ToString(); param.NameSpace = ""; param.NameSpace1 = ""; param.ServerID = server.ID; param.BuilderType = BuilderType.Default; param.MethodList = methods; param.CNSC = new Config_NameSpaceClass().GetDefault(); Business.CreateCode CreateCodeInstince = new Business.CreateCode(server.Type); StreamWriter sw; string FileName = string.Empty; foreach (TreeNode node in NodeList) { param.TableName = ((TreeNodeTag)node.Tag).Tag.ToString(); param.ClassName = param.TableName; //生成实体类 FileName = Func.ExistsDirectory(string.Format("{0}\\{1}.{2}\\{3}{4}.cs", configDir_tb_OutputDir.Text, param.NameSpace, param.CNSC.Model, param.NameSpace1.IsNullOrEmpty() ? "" : param.NameSpace1 + "\\", param.ClassName)); sw = File.CreateText(FileName); sw.Write(CreateCodeInstince.GetModelClass(param)); sw.Close(); sw.Dispose(); configDir_label_progress.Text = string.Format("生成文件:{0}", FileName); //生成数据类 FileName = Func.ExistsDirectory(string.Format("{0}\\{1}.{2}\\{3}{4}.cs", configDir_tb_OutputDir.Text, param.NameSpace, param.CNSC.Data, param.NameSpace1.IsNullOrEmpty() ? "" : param.NameSpace1 + "\\", param.ClassName)); sw = File.CreateText(FileName); sw.Write(CreateCodeInstince.GetDataClass(param)); sw.Close(); sw.Dispose(); configDir_label_progress.Text = string.Format("生成文件:{0}", FileName); //生成业务类 FileName = Func.ExistsDirectory(string.Format("{0}\\{1}.{2}\\{3}{4}.cs", configDir_tb_OutputDir.Text, param.NameSpace, param.CNSC.Business, param.NameSpace1.IsNullOrEmpty() ? "" : param.NameSpace1 + "\\", param.ClassName)); sw = File.CreateText(FileName); sw.Write(CreateCodeInstince.GetBusinessClass(param)); sw.Close(); sw.Dispose(); configDir_label_progress.Text = string.Format("生成文件:{0}", FileName); if (param.BuilderType == BuilderType.Factory) { //生成接口类 FileName = Func.ExistsDirectory(string.Format("{0}\\{1}.{2}\\{3}{4}.cs", configDir_tb_OutputDir.Text, param.NameSpace, param.CNSC.Interface, param.NameSpace1.IsNullOrEmpty() ? "" : param.NameSpace1 + "\\", param.ClassName)); sw = File.CreateText(FileName); sw.Write(CreateCodeInstince.GetInterfaceClass(param)); sw.Close(); sw.Dispose(); configDir_label_progress.Text = string.Format("生成文件:{0}", FileName); //生成工厂类 FileName = Func.ExistsDirectory(string.Format("{0}\\{1}.{2}\\{3}{4}.cs", configDir_tb_OutputDir.Text, param.NameSpace, param.CNSC.Factory, param.NameSpace1.IsNullOrEmpty() ? "" : param.NameSpace1 + "\\", param.ClassName)); sw = File.CreateText(FileName); sw.Write(CreateCodeInstince.GetFactoryClass(param)); sw.Close(); sw.Dispose(); configDir_label_progress.Text = string.Format("生成文件:{0}", FileName); } } MessageBox.Show("生成完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this.configDir_label_progress.Text = "生成已完成"; this.configDir_btn_Build.Enabled = true; }
/// <summary> /// 得到数据层代码 /// </summary> /// <param name="param"></param> /// <returns></returns> public string GetDataClass(CodeCreate param) { Servers server = Config.GetServer(param.ServerID); if (server == null) { return(string.Empty); } List <Fields> fields = databaseInstance.GetFields(server.ID, param.DbName, param.TableName); StringBuilder data = new StringBuilder(import.GetImport_Data()); data.Append("namespace " + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Data + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "\r\n"); data.Append("{\r\n"); data.Append("\tpublic class " + param.ClassName + (param.BuilderType == BuilderType.Factory ? " : " + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Interface + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + ".I" + param.ClassName : "") + "\r\n"); data.Append("\t{\r\n"); data.Append("\t\tprivate DBHelper dbHelper = new DBHelper();\r\n"); data.Append("\t\t/// <summary>\r\n"); data.Append("\t\t/// 构造函数\r\n"); data.Append("\t\t/// </summary>\r\n"); data.Append("\t\tpublic " + param.ClassName + "()\r\n"); data.Append("\t\t{\r\n"); data.Append("\t\t}\r\n"); //新增记录 if (param.MethodList.Contains(BuilderMethods.Add)) { data.Append(GetAddMethod(fields, param)); } //更新记录 if (param.MethodList.Contains(BuilderMethods.Update) && fields.Any(p => p.IsPrimaryKey)) { data.Append(GetUpdateMethod(fields, param)); } //删除记录 if (param.MethodList.Contains(BuilderMethods.Delete) && fields.Any(p => p.IsPrimaryKey)) { data.Append(GetDeleteMethod(fields, param)); } //转换List data.Append(GetConvertDataReaderToListMethod(fields, param)); //查询所有记录 if (param.MethodList.Contains(BuilderMethods.SelectAll)) { data.Append(GetAllMethod(fields, param)); } //查询记录数 if (param.MethodList.Contains(BuilderMethods.Count)) { data.Append(GetCountMethod(fields, param)); } //查询主键记录 if (param.MethodList.Contains(BuilderMethods.SelectByKey) && fields.Any(p => p.IsPrimaryKey)) { data.Append(GetByKeyMethod(fields, param)); } data.Append("\t}\r\n"); data.Append("}"); return(data.ToString()); }