/// <summary> /// 构造方法. /// </summary> /// <param name="namespaceName">命名空间名</param> /// <param name="refList">引用列表</param> /// <param name="claName">类名</param> /// <param name="claRemark">类注释</param> /// <param name="fieldInfo">字段信息表</param> public EntityDALGenrator(string namespaceName, string[] refList, string claName, string claRemark, DataTable fieldInfo) { claName = GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(claName) + ToolSetting.Postfix); this.GetClassHeader(namespaceName, refList, claName, claRemark); this.CURD(claName, claRemark, fieldInfo); this.GetClassEnder(); }
/// <summary> /// 构造方法. /// </summary> /// <param name="namespaceName">命名空间名</param> /// <param name="refList">引用列表</param> /// <param name="claName">类名</param> /// <param name="claRemark">类注释</param> /// <param name="fieldInfo">字段信息表</param> public ControllerGenrator(string namespaceName, string[] refList, string claName, string claRemark, DataTable fieldInfo) { claName = GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(claName) + ToolSetting.Postfix); _classdal = "I" + claName + "DAL"; _classidal = "_i" + claName + "DAL"; _classnodal = "i" + claName + "DAL"; this.GetClassHeader(namespaceName, refList, claName, claRemark); this.CURD(claName, claRemark, fieldInfo); this.GetClassEnder(); }
/// <summary> /// 构造方法. /// </summary> /// <param name="namespaceName">命名空间名</param> /// <param name="refList">引用列表</param> /// <param name="claName">类名</param> /// <param name="claRemark">类注释</param> /// <param name="fieldInfo">字段信息表</param> public EntityClassGenrator(string namespaceName, string[] refList, string claName, string claRemark, DataTable fieldInfo) { claName = GeneratorTool.FormatTableOrFieldName(claName) + ToolSetting.Postfix; this.GetClassHeader(namespaceName, refList, claName, claRemark); //this.GetStructureMethod(claName); this.GetStruMethodWithParams(claName, fieldInfo); this.GetFieldList(fieldInfo); this.GetAttrList(fieldInfo); this.GetClassEnder(); }
/// <summary> /// 得到.Net实体类的字段代码列表. /// </summary> /// <param name="fieldInfo">字段信息表</param> private void GetFieldList(DataTable fieldInfo) { Field field = new Field(); for (int i = 0; i < fieldInfo.Rows.Count; i++) { field.name = GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i][0].ToString()); field.type = fieldInfo.Rows[i][1].ToString(); field.remark = fieldInfo.Rows[i][2].ToString(); //this._fieldList.Add(this.GetFieldItem(field)); } }
/// <summary> /// 获取更新方法 /// </summary> /// <param name="claName"></param> /// <param name="claRemark"></param> /// <returns></returns> private string GetUpdateMethods(string claName, string claRemark, DataTable fieldInfo) { string Annotation = ""; for (int i = 0; i < fieldInfo.Rows.Count; i++) { Annotation += GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i][0].ToString())) + ":" + fieldInfo.Rows[i][2].ToString() + ";"; } string UpdateSql = "/// <summary>\n///修改" + claRemark + "\n/// </summary>\n/// <param name=\"ID\">主键ID(Id)</param>\n/// <param name=\"value\">" + Annotation + "</param>\n/// <returns></returns>\n [HttpPut] \n public MessageEntity Put(string ID, [FromBody] " + claName + " value)\n{\nif (value == null)\n{\nreturn MessageEntityTool.GetMessage(ErrorType.FieldError);\n}\nvalue.Id = ID;\nreturn " + _classidal + ".Update(value);\n}\n"; return(UpdateSql); }
/// <summary> /// 获取添加方法 /// </summary> /// <param name="claName"></param> /// <param name="claRemark"></param> /// <returns></returns> private string GetAddMethods(string claName, string claRemark, DataTable fieldInfo) { string Annotation = ""; for (int i = 0; i < fieldInfo.Rows.Count; i++) { Annotation += GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i][0].ToString())) + ":" + fieldInfo.Rows[i][2].ToString() + ";"; } string AddSql = "/// <summary>\n/// 添加" + claRemark + "\n/// </summary>\n/// <param name=\"model\">" + Annotation + "</param>\n/// <returns></returns>\n [HttpPost] \n public MessageEntity Post([FromBody]" + claName + " model)\n{\nif (model == null)\n{\nreturn MessageEntityTool.GetMessage(ErrorType.FieldError);\n}\nvar result = " + _classidal + ".Add(model);\nreturn result;\n}\n"; return(AddSql); }
/// <summary> /// 获取list方法 /// </summary> /// <param name="claName"></param> /// <param name="claRemark"></param> /// <param name="fieldInfo"></param> /// <returns></returns> private string GetListMethods(string claName, string claRemark, DataTable fieldInfo) { StringBuilder Fileds = new StringBuilder(""); for (int i = 0; i < fieldInfo.Rows.Count; i++) { Fileds.Append(GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i][0].ToString())) + ","); } string Filed = Fileds.ToString().TrimEnd(','); string GetListSql = "/// <summary>\n/// 获得" + claRemark + "列表\n/// </summary>\n/// <param name=\"parInfo\">参数信息</param>/// <param name=\"sort\">排序字段</param>\n/// <param name=\"ordering\">升序/降序</param>/// <param name=\"num\">当前页</param>/// <param name=\"page\">每页数据行数</param>\n/// <returns></returns>\npublic MessageEntity GetList(List<ParameterInfo> parInfo, string sort, string ordering, int num, int page, string sqlCondition)\n{string sql = @\" select " + Filed + " from " + claName + " ipc \n\" + sqlCondition;\nvar ResultList = DapperExtentions.EntityForSqlToPager<" + claName + ">(sql, sort, ordering, num, page, out MessageEntity result, ConnectionFactory.DBConnNames.ORCL);\nreturn result;\n}\n"; return(GetListSql); }
/// <summary> /// 得到.Net实体类的属性列表. /// </summary> /// <param name="fieldInfo">字段信息表</param> private void GetAttrList(DataTable fieldInfo) { Field field = new Field(); for (int i = 0; i < fieldInfo.Rows.Count; i++) { field.name = GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i][0].ToString())); field.type = fieldInfo.Rows[i][1].ToString(); field.remark = fieldInfo.Rows[i][2].ToString(); field.constrainttype = fieldInfo.Rows[i][3].ToString(); this._attrList.Add(this.GetAttrItem(field)); } }
/// <summary> /// 获取添加方法 /// </summary> /// <param name="claName"></param> /// <param name="claRemark"></param> /// <returns></returns> private string GetAddMethods(string claName, string claRemark, DataTable fieldInfo) { if (fieldInfo.Select(" 数据库字段类型 = 'CLOB' OR 字段长度 >= 4000").Count() > 0) { string Parame = ""; string ParameValue = ""; string Filedstr = ""; string FiledValue = ""; for (int i = 0; i < fieldInfo.Rows.Count; i++) { //if (fieldInfo.Rows[i]["是否主键"].ToString() == "P") //{ // continue; //} Filedstr += fieldInfo.Rows[i]["字段名"].ToString() + ","; if (fieldInfo.Rows[i]["是否主键"].ToString() == "P") { FiledValue += "'{Guid.NewGuid().ToString()}',"; } else if (fieldInfo.Rows[i]["数据库字段类型"].ToString().ToUpper() == "CLOB" || Convert.ToInt32(fieldInfo.Rows[i]["字段长度"].ToString()) >= 4000) { Parame += "\n" + fieldInfo.Rows[i]["字段名"].ToString() + " CLOB;"; ParameValue += "\n" + fieldInfo.Rows[i]["字段名"].ToString() + " :='{model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + "}';"; FiledValue += GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + ","; } else if (fieldInfo.Rows[i]["数据库字段类型"].ToString().ToUpper() == "NUMBER") { FiledValue += "{model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + "},"; } else if (fieldInfo.Rows[i]["数据库字段类型"].ToString().ToUpper() == "DATE") { FiledValue += "to_date('{model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + "}','YYYY-mm-dd HH24:Mi:SS'),"; } else { FiledValue += "'{model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + "}',"; } } Filedstr = Filedstr.TrimEnd(','); FiledValue = FiledValue.TrimEnd(','); string AddSql = "/// <summary>\n/// 添加" + claRemark + "\n/// </summary>\n/// <param name=\"model\">模型</param>\n/// <returns></returns>\npublic MessageEntity Add(" + claName + " model)\n{\nusing (var conn = ConnectionFactory.GetDBConn(ConnectionFactory.DBConnNames.ORCL))\n{\nStringBuilder SqlInsertEqu = new StringBuilder();\nvar rows = 0;\nvar insertSql = $@\"DECLARE\n" + Parame + "\nBEGIN\n" + ParameValue + "\nINSERT INTO " + claName + "(" + Filedstr + ")\nValues(" + FiledValue + ");\nCOMMIT;\nEND;\";\nif (string.IsNullOrEmpty(insertSql))\n{\nreturn MessageEntityTool.GetMessage(ErrorType.SqlError, \"请检查实体类\");\n}\ntry\n{\nrows = conn.Execute(insertSql, model);\nreturn MessageEntityTool.GetMessage(rows);\n}\ncatch (Exception e)\n{\nreturn MessageEntityTool.GetMessage(ErrorType.SqlError, e.Message);\n}\n}\n}\n"; return(AddSql); } else { string AddSql = "/// <summary>\n/// 添加" + claRemark + "\n/// </summary>\n/// <param name=\"model\">模型</param>\n/// <returns></returns>\npublic MessageEntity Add(" + claName + " model)\n{\nusing (var conn = ConnectionFactory.GetDBConn(ConnectionFactory.DBConnNames.ORCL))\n{\nStringBuilder SqlInsertEqu = new StringBuilder();\nvar rows = 0;\nvar insertSql = DapperExtentions.MakeInsertSql(model);\nif (string.IsNullOrEmpty(insertSql))\n{\nreturn MessageEntityTool.GetMessage(ErrorType.SqlError, \"请检查实体类\");\n}\ntry\n{\nrows = conn.Execute(insertSql, model);\nreturn MessageEntityTool.GetMessage(rows);\n}\ncatch (Exception e)\n{\nreturn MessageEntityTool.GetMessage(ErrorType.SqlError, e.Message);\n}\n}\n}\n"; return(AddSql); } }
/// <summary> /// 获取单个实体方法 /// </summary> /// <param name="claName"></param> /// <param name="claRemark"></param> /// <param name="fieldInfo"></param> /// <returns></returns> private string GetInfoMethods(string claName, string claRemark, DataTable fieldInfo) { string PKey = ""; Field field = new Field(); for (int i = 0; i < fieldInfo.Rows.Count; i++) { field.constrainttype = fieldInfo.Rows[i][3].ToString(); if (field.constrainttype.Contains("P")) { PKey = GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i][0].ToString())); } } string GetInfoSql = "/// <summary>\n/// 根据ID获取" + claRemark + "\n/// </summary>\n/// <param name=\"ID\"></param>\n/// <returns></returns>\npublic " + claName + " GetInfo(string ID)\n{\nList<" + claName + "> _ListField = new List<" + claName + ">();\nusing (var conn = ConnectionFactory.GetDBConn(ConnectionFactory.DBConnNames.ORCL))\n{\n_ListField = conn.Query<" + claName + ">(\"select * from " + claName + " t where " + PKey + "='\" + ID + \"'\").ToList();\n}\nif (_ListField.Count > 0)\n{\nreturn _ListField[0];\n}\nelse\n{\nreturn null;\n}\n}\n"; return(GetInfoSql); }
///// <summary> ///// 获取单个实体方法 ///// </summary> ///// <param name="claName"></param> ///// <param name="claRemark"></param> ///// <param name="fieldInfo"></param> ///// <returns></returns> //private string GetInfoMethods(string claName, string claRemark, DataTable fieldInfo) //{ // string PKey = ""; // Field field = new Field(); // for (int i = 0; i < fieldInfo.Rows.Count; i++) // { // field.constrainttype = fieldInfo.Rows[i][3].ToString(); // if (field.constrainttype.Contains("P")) // { // PKey = GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i][0].ToString())); // } // } // string GetInfoSql = "/// <summary>\n/// 根据ID获取" + claRemark + "\n/// </summary>\n/// <param name=\"ID\"></param>\n/// <returns></returns>\npublic " + claName + " GetInfo(string ID)\n{\nList<" + claName + "> _ListField = new List<" + claName + ">();\nusing (var conn = ConnectionFactory.GetDBConn(ConnectionFactory.DBConnNames.ORCL))\n{\n_ListField = conn.Query<" + claName + ">(\"select * from " + claName + " t where " + PKey + "='\" + ID + \"'\").ToList();\n}\nif (_ListField.Count > 0)\n{\nreturn _ListField[0];\n}\nelse\n{\nreturn null;\n}\n}\n"; // return GetInfoSql; //} /// <summary> /// 获取list方法 /// </summary> /// <param name="claName"></param> /// <param name="claRemark"></param> /// <param name="fieldInfo"></param> /// <returns></returns> private string GetListMethods(string claName, string claRemark, DataTable fieldInfo) { string PKey = ""; Field field = new Field(); for (int i = 0; i < fieldInfo.Rows.Count; i++) { field.constrainttype = fieldInfo.Rows[i][3].ToString(); if (field.constrainttype.Contains("P")) { PKey = GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i][0].ToString())); } } string GetListSql = "/// <summary>\n/// 获得" + claRemark + "列表\n/// </summary>\n/// <param name=\"ParInfo\">参数信息</param>\n/// <param name=\"sort\">排序字段</param>\n/// <param name=\"ordering\">升序/降序</param>\n/// <param name=\"num\">当前页</param>\n/// <param name=\"page\">每页数据行数</param>\n/// <returns></returns>\n[HttpGet]\n public MessageEntity GetList(string ParInfo, string sort = \"" + PKey + "\", string ordering = \"desc\", int num = 20, int page = 1)\n{\nList<ParameterInfo> list = JsonConvert.DeserializeObject<List<ParameterInfo>>(ParInfo);\nSqlCondition sqlWhere = new SqlCondition();\nstring sqlCondition = sqlWhere.getParInfo(list);\nvar result = " + _classidal + ".GetList(list, sort, ordering, num, page, sqlCondition);\n return result;\n}\n"; return(GetListSql); }
/// <summary> /// 获取更新方法 /// </summary> /// <param name="claName"></param> /// <param name="claRemark"></param> /// <returns></returns> private string GetUpdateMethods(string claName, string claRemark, DataTable fieldInfo) { if (fieldInfo.Select(" 数据库字段类型 = 'CLOB' OR 字段长度 >= 4000").Count() > 0) { string Parame = ""; string ParameValue = ""; //string Filedstr = ""; string FiledValue = ""; string SqlWhere = " WHERE 1=1 "; for (int i = 0; i < fieldInfo.Rows.Count; i++) { //Filedstr += fieldInfo.Rows[i]["字段名"].ToString() + ","; if (fieldInfo.Rows[i]["数据库字段类型"].ToString().ToUpper() == "CLOB" || Convert.ToInt32(fieldInfo.Rows[i]["字段长度"].ToString()) >= 4000) { Parame += "\n" + fieldInfo.Rows[i]["字段名"].ToString() + " CLOB;"; ParameValue += "\n" + fieldInfo.Rows[i]["字段名"].ToString() + " :='{model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + "}';"; FiledValue += "T." + fieldInfo.Rows[i]["字段名"].ToString() + "=" + fieldInfo.Rows[i]["字段名"].ToString() + " ,"; } else if (fieldInfo.Rows[i]["数据库字段类型"].ToString().ToUpper() == "NUMBER") { FiledValue += "T." + fieldInfo.Rows[i]["字段名"].ToString() + "={model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + "},"; } else if (fieldInfo.Rows[i]["数据库字段类型"].ToString().ToUpper() == "DATE") { FiledValue += "T." + fieldInfo.Rows[i]["字段名"].ToString() + "=to_date('{model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + "}','YYYY-mm-dd HH24:Mi:SS'),"; } else { FiledValue += "T." + fieldInfo.Rows[i]["字段名"].ToString() + "='{model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(fieldInfo.Rows[i]["字段名"].ToString())) + "}',"; } } //Filedstr = Filedstr.TrimEnd(','); FiledValue = FiledValue.TrimEnd(','); DataRow[] dr = fieldInfo.Select(" 是否主键 = 'P'"); for (int i = 0; i < dr.Count(); i++) { if (dr[i]["数据库字段类型"].ToString().ToUpper() == "NUMBER") { SqlWhere += " AND T." + dr[i]["字段名"].ToString() + "={model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(dr[i]["字段名"].ToString())) + "},"; } else { SqlWhere += " AND T." + dr[i]["字段名"].ToString() + "='{model." + GeneratorTool.ChartConversion(GeneratorTool.FormatTableOrFieldName(dr[i]["字段名"].ToString())) + "}',"; } } string UpdateSql = "/// <summary>\n///修改" + claRemark + "\n/// </summary>\n/// <param name=\"model\">模型</param>\n/// <returns></returns>\npublic MessageEntity Update(" + claName + " model)\n{\nusing (var conn = ConnectionFactory.GetDBConn(ConnectionFactory.DBConnNames.ORCL))\n{\nvar rows = 0;\nvar insertSql = \n$@\"DECLARE\n" + Parame + "\nBEGIN\n" + ParameValue + "\nUPDATE " + claName + " T SET \n" + FiledValue + "\n" + SqlWhere + "\nCOMMINT;\nEND;\";\nif (string.IsNullOrEmpty(insertSql))\n{\nreturn MessageEntityTool.GetMessage(ErrorType.SqlError, \"请检查实体类\");\n}\ntry\n{\nrows = conn.Execute(insertSql, model);\nreturn MessageEntityTool.GetMessage(rows);\n}\ncatch (Exception e)\n{\nreturn MessageEntityTool.GetMessage(ErrorType.SqlError, e.Message);\n}\n}\n}\n"; return(UpdateSql); } else { string UpdateSql = "/// <summary>\n///修改" + claRemark + "\n/// </summary>\n/// <param name=\"model\">模型</param>\n/// <returns></returns>\npublic MessageEntity Update(" + claName + " model)\n{\nusing (var conn = ConnectionFactory.GetDBConn(ConnectionFactory.DBConnNames.ORCL))\n{\nvar rows = 0;\nvar insertSql = DapperExtentions.MakeUpdateSql(model);\nif (string.IsNullOrEmpty(insertSql))\n{\nreturn MessageEntityTool.GetMessage(ErrorType.SqlError, \"请检查实体类\");\n}\ntry\n{\nrows = conn.Execute(insertSql, model);\nreturn MessageEntityTool.GetMessage(rows);\n}\ncatch (Exception e)\n{\nreturn MessageEntityTool.GetMessage(ErrorType.SqlError, e.Message);\n}\n}\n}\n"; return(UpdateSql); } }