/// <summary> /// 创建Model类 /// </summary> /// <param name="dataTable">表对象</param> /// <param name="path">类文件路径</param> internal static void CreateModelClass(DataTable dataTable, string tablemark, string path) { string className = dataTable.TableName.ToString() + "Entity"; string targetNamespace = "Taotaole.Model"; //创建类文件 StreamWriter streamWriter = new StreamWriter(path + className + ".cs"); // 创建 class头 streamWriter.WriteLine("using System;"); streamWriter.WriteLine("using System.Data;"); streamWriter.WriteLine("using System.Collections;"); streamWriter.WriteLine(); streamWriter.WriteLine("namespace " + targetNamespace + " {"); streamWriter.WriteLine("\t/// <summary>"); streamWriter.WriteLine("\t/// " + tablemark + "-实体类");//管理员-实体类 streamWriter.WriteLine("\t/// </summary>"); streamWriter.WriteLine("\t[Serializable]"); streamWriter.WriteLine("\tpublic class " + className + " {"); streamWriter.WriteLine(); //定义每列数据库字段名 streamWriter.WriteLine("\t\t#region 字段名"); for (int i = 0; i < dataTable.Columns.Count; i++) { DataColumn column = dataTable.Columns[i]; streamWriter.WriteLine("\t\tpublic static string Field" + Utility.FormatPascal(column.ColumnName) + " = \"" + Utility.FormatPascal(column.ColumnName) + "\";"); } streamWriter.WriteLine("\t\t#endregion"); streamWriter.WriteLine(); //为每列创建属性 streamWriter.WriteLine("\t\t#region 属性"); string privateName, publicName; for (int i = 0; i < dataTable.Columns.Count; i++) { DataColumn column = dataTable.Columns[i]; privateName = "_" + Utility.FormatCamel(column.ColumnName); publicName = Utility.FormatPascal(column.ColumnName); streamWriter.WriteLine("\t\tprivate " + Utility.GetClassType(column.DataType.Name) + " " + privateName + ";"); streamWriter.WriteLine("\t\tpublic " + Utility.GetClassType(column.DataType.Name) + " " + publicName); streamWriter.WriteLine("\t\t{"); streamWriter.WriteLine("\t\t\tget{ return " + privateName + ";}"); streamWriter.WriteLine("\t\t\tset{ " + privateName + "=value;}"); streamWriter.WriteLine("\t\t}"); } streamWriter.WriteLine("\t\t#endregion"); streamWriter.WriteLine(); //添加构造函数 streamWriter.WriteLine("\t\t#region 构造函数"); streamWriter.WriteLine("\t\tpublic " + className + "(){}"); streamWriter.WriteLine(); streamWriter.WriteLine("\t\tpublic " + className + "(DataRow dr)"); streamWriter.WriteLine("\t\t{"); for (int i = 0; i < dataTable.Columns.Count; i++) { DataColumn column = dataTable.Columns[i]; streamWriter.WriteLine("\t\t\tif (dr[Field" + Utility.FormatPascal(column.ColumnName) + "] != DBNull.Value)"); streamWriter.WriteLine("\t\t\t{"); streamWriter.WriteLine("\t\t\t_" + Utility.FormatCamel(column.ColumnName) + " = (" + Utility.GetClassType(column.DataType.Name) + ")dr[Field" + Utility.FormatPascal(column.ColumnName) + "];"); streamWriter.WriteLine("\t\t\t}"); } streamWriter.WriteLine("\t\t}"); streamWriter.WriteLine("\t\t#endregion"); streamWriter.WriteLine(); streamWriter.WriteLine("\t}"); //创建集合类 //CreateCollectionClass(table, streamWriter); streamWriter.WriteLine("}"); streamWriter.Flush(); streamWriter.Close(); }
/// <summary> /// 创建根据主键获取对象方法 /// </summary> /// <param name="table">表对象</param> /// <param name="storedProcedurePrefix">存储过程前缀.</param> /// <param name="streamWriter">写入文件流</param> private static void CreateSelectMethod(Table table, string storedProcedurePrefix, StreamWriter streamWriter) { if (table.PrimaryKeys.Count > 0 && table.Columns.Count != table.ForeignKeys.Count) { #region 添加根据主键返回类对象方法 // 插入空行 streamWriter.WriteLine(); streamWriter.WriteLine(); // 方法头 streamWriter.WriteLine("\t\t/// <summary>"); streamWriter.WriteLine("\t\t/// 根据主键从 " + table.Name + " 表中获取单个记录"); streamWriter.WriteLine("\t\t/// </summary>"); string className = Utility.FormatPascal(table.ProgrammaticAlias); streamWriter.Write("\t\tpublic static " + className + " Get("); for (int i = 0; i < table.PrimaryKeys.Count; i++) { Column column = (Column)table.PrimaryKeys[i]; if (i != table.PrimaryKeys.Count - 1) { streamWriter.Write(Utility.CreateMethodParameter(column) + ", "); } else { streamWriter.Write(Utility.CreateMethodParameter(column)); } } streamWriter.Write(")"); streamWriter.WriteLine("\t\t{"); streamWriter.WriteLine("\t\t\t" + className + " " + className.ToLower() + " = new " + className + "();"); streamWriter.WriteLine("\t\t\tString strSpName = " + "\"" + storedProcedurePrefix + table.Name + "Select\";"); streamWriter.WriteLine("\t\t\tSqlParameter[] sqlSpParaArray = new SqlParameter[" + (table.PrimaryKeys.Count).ToString() + "];"); for (int i = 0; i < table.PrimaryKeys.Count; i++) { Column column = (Column)table.PrimaryKeys[i]; streamWriter.WriteLine("\t\t\tsqlSpParaArray[" + i.ToString() + "] = new SqlParameter(\"@" + Utility.FormatPascal(column.ProgrammaticAlias) + "\", " + Utility.FormatCamel(column.ProgrammaticAlias) + ");"); } streamWriter.WriteLine("\t\t\tSqlDataReader reader = (SqlDataReader)DataProvider.Instance.GetReaderBySp(strSpName,sqlSpParaArray);"); streamWriter.WriteLine("\t\t\ttry"); streamWriter.WriteLine("\t\t\t{"); streamWriter.WriteLine("\t\t\t\tif(reader.HasRows)"); streamWriter.WriteLine("\t\t\t\t{"); streamWriter.WriteLine("\t\t\t\t\treader.Read();"); streamWriter.WriteLine("\t\t\t\t\tDataProvider.Instance.SetReaderToObject(reader, " + className.ToLower() + ");"); streamWriter.WriteLine("\t\t\t\t}"); streamWriter.WriteLine("\t\t\t}"); streamWriter.WriteLine("\t\t\tfinally"); streamWriter.WriteLine("\t\t\t{"); streamWriter.WriteLine("\t\t\t\tif (!reader.IsClosed)"); streamWriter.WriteLine("\t\t\t\t{"); streamWriter.WriteLine("\t\t\t\t\treader.Close();"); streamWriter.WriteLine("\t\t\t\t}"); streamWriter.WriteLine("\t\t\t}"); streamWriter.WriteLine("\t\t\treturn " + className.ToLower() + ";"); streamWriter.WriteLine("\t\t}"); #endregion #region 添加根据主键返回DataSet方法 // 插入空行 streamWriter.WriteLine(); streamWriter.WriteLine(); // 方法头 streamWriter.WriteLine("\t\t/// <summary>"); streamWriter.WriteLine("\t\t/// 根据主键从 " + table.Name + " 表中获取单个记录,返回DataSet"); streamWriter.WriteLine("\t\t/// </summary>"); // string className = Utility.FormatPascal(table.ProgrammaticAlias); streamWriter.Write("\t\tpublic static DataSet " + " GetDataSet("); for (int i = 0; i < table.PrimaryKeys.Count; i++) { Column column = (Column)table.PrimaryKeys[i]; if (i != table.PrimaryKeys.Count - 1) { streamWriter.Write(Utility.CreateMethodParameter(column) + ", "); } else { streamWriter.Write(Utility.CreateMethodParameter(column)); } } streamWriter.Write(")"); streamWriter.WriteLine("\t\t{"); streamWriter.WriteLine("\t\t\t" + className + " " + className.ToLower() + " = new " + className + "();"); streamWriter.WriteLine("\t\t\tString strSpName = " + "\"" + storedProcedurePrefix + table.Name + "Select\";"); streamWriter.WriteLine("\t\t\tSqlParameter[] sqlSpParaArray = new SqlParameter[" + (table.PrimaryKeys.Count).ToString() + "];"); for (int i = 0; i < table.PrimaryKeys.Count; i++) { Column column = (Column)table.PrimaryKeys[i]; streamWriter.WriteLine("\t\t\tsqlSpParaArray[" + i.ToString() + "] = new SqlParameter(\"@" + Utility.FormatPascal(column.ProgrammaticAlias) + "\", " + Utility.FormatCamel(column.ProgrammaticAlias) + ");"); } streamWriter.WriteLine("\t\t\tDataSet ds = DataProvider.Instance.GetDatasetBySp(strSpName, sqlSpParaArray);"); streamWriter.WriteLine("\t\t\treturn ds;"); streamWriter.WriteLine("\t\t}"); streamWriter.WriteLine(); #endregion } }
/// <summary> /// 创建根据Key删除方法 /// </summary> /// <param name="table">表对象</param> /// <param name="storedProcedurePrefix">存储过程前缀</param> /// <param name="streamWriter">写入文件流</param> private static void CreateDeleteMethod(Table table, string storedProcedurePrefix, StreamWriter streamWriter) { if (table.PrimaryKeys.Count > 0) { // 插入空行 streamWriter.WriteLine(); streamWriter.WriteLine(); // 创建根据Key删除方法 // 方法头 streamWriter.WriteLine("\t\t/// <summary>"); streamWriter.WriteLine("\t\t/// 通过主键删除 " + table.Name + "记录"); streamWriter.WriteLine("\t\t/// </summary>"); streamWriter.Write("\t\tpublic static void Delete("); for (int i = 0; i < table.PrimaryKeys.Count; i++) { Column column = (Column)table.PrimaryKeys[i]; if (i != table.PrimaryKeys.Count - 1) { streamWriter.Write(Utility.CreateMethodParameter(column) + ", "); } else { streamWriter.Write(Utility.CreateMethodParameter(column)); } } streamWriter.Write(")"); streamWriter.WriteLine("\t\t{"); streamWriter.WriteLine("\t\t\tString strSpName = " + "\"" + storedProcedurePrefix + table.Name + "Delete\";"); streamWriter.WriteLine("\t\t\tSqlParameter[] sqlSpParaArray = new SqlParameter[" + (table.PrimaryKeys.Count).ToString() + "];"); for (int i = 0; i < table.PrimaryKeys.Count; i++) { Column column = (Column)table.PrimaryKeys[i]; streamWriter.WriteLine("\t\t\tsqlSpParaArray[" + i.ToString() + "] = new SqlParameter(\"@" + Utility.FormatPascal(column.ProgrammaticAlias) + "\", " + Utility.FormatCamel(column.ProgrammaticAlias) + ");"); } streamWriter.WriteLine("\t\t\tDataProvider.Instance.ExecuteSp(strSpName,sqlSpParaArray);"); // Append the method footer streamWriter.WriteLine("\t\t}"); } }
/// <summary> /// 创建根据外键删除的方法 /// </summary> /// <param name="table">表对象</param> /// <param name="storedProcedurePrefix">存储过程前缀.</param> /// <param name="streamWriter">写入文件流</param> private static void CreateDeleteByMethods(Table table, string storedProcedurePrefix, StreamWriter streamWriter) { // 根据每个外键创建删除方法 foreach (ArrayList compositeKeyList in table.ForeignKeys.Values) { // 插入空行 streamWriter.WriteLine(); streamWriter.WriteLine(); // 设置存储过程名 StringBuilder stringBuilder = new StringBuilder(255); stringBuilder.Append(storedProcedurePrefix + table.Name + "DeleteAllBy"); for (int i = 0; i < compositeKeyList.Count; i++) { Column column = (Column)compositeKeyList[i]; if (i > 0) { stringBuilder.Append("_" + Utility.FormatPascal(column.Name)); } else { stringBuilder.Append(Utility.FormatPascal(column.Name)); } } string procedureName = stringBuilder.ToString(); // 设置方法名 stringBuilder = new StringBuilder(255); stringBuilder.Append("DeleteAllBy"); for (int i = 0; i < compositeKeyList.Count; i++) { Column column = (Column)compositeKeyList[i]; if (i > 0) { stringBuilder.Append("_" + Utility.FormatPascal(column.ProgrammaticAlias)); } else { stringBuilder.Append(Utility.FormatPascal(column.ProgrammaticAlias)); } } string methodName = stringBuilder.ToString(); // 创建根据外键删除功能 // 方法头 streamWriter.WriteLine("\t\t/// <summary>"); streamWriter.WriteLine("\t\t/// 根据外键删除 " + table.Name + " 表中记录"); streamWriter.WriteLine("\t\t/// </summary>"); streamWriter.Write("\t\tpublic static void " + methodName + "("); for (int i = 0; i < compositeKeyList.Count; i++) { Column column = (Column)compositeKeyList[i]; if (i != compositeKeyList.Count - 1) { streamWriter.Write(Utility.CreateMethodParameter(column) + ", "); } else { streamWriter.Write(Utility.CreateMethodParameter(column)); } } streamWriter.Write(")"); streamWriter.WriteLine("\t\t{"); streamWriter.WriteLine("\t\t\tString strSpName = " + "\"" + procedureName + "\";"); streamWriter.WriteLine("\t\t\tSqlParameter[] sqlSpParaArray = new SqlParameter[" + (compositeKeyList.Count).ToString() + "];"); for (int i = 0; i < compositeKeyList.Count; i++) { Column column = (Column)compositeKeyList[i]; streamWriter.WriteLine("\t\t\tsqlSpParaArray[" + i.ToString() + "] = new SqlParameter(\"@" + Utility.FormatPascal(column.ProgrammaticAlias) + "\", " + Utility.FormatCamel(column.ProgrammaticAlias) + ");"); } streamWriter.WriteLine("\t\t\tDataProvider.Instance.ExecuteSp(strSpName,sqlSpParaArray);"); // Append the method footer streamWriter.WriteLine("\t\t}"); } }
/// <summary> /// 创建Module类 /// </summary> /// <param name="table">表对象</param> /// <param name="storedProcedurePrefix">存储过程前缀</param> /// <param name="path">类文件路径</param> internal static void CreateComponentClass(Table table, string targetNamespace, string storedProcedurePrefix, string path) { // string className = Utility.FormatPascal(table.Name); string className = Utility.FormatPascal(table.ProgrammaticAlias); //创建类文件 StreamWriter streamWriter = new StreamWriter(path + className + ".cs"); // 创建 class头 streamWriter.WriteLine("using System;"); streamWriter.WriteLine("using System.Data;"); streamWriter.WriteLine("using System.Collections;"); streamWriter.WriteLine(); if (targetNamespace.Length > 0) { streamWriter.WriteLine("namespace " + targetNamespace + ".Component {"); } else { streamWriter.WriteLine("namespace Component {"); } streamWriter.WriteLine("\t/// <summary>"); streamWriter.WriteLine("\t/// " + className + "类"); streamWriter.WriteLine("\t/// </summary>"); streamWriter.WriteLine("\t[Serializable]"); streamWriter.WriteLine("\tpublic class " + className + " {"); streamWriter.WriteLine(); //定义每列数据库字段名 streamWriter.WriteLine("\t\t#region 字段名"); for (int i = 0; i < table.Columns.Count; i++) { Column column = (Column)table.Columns[i]; streamWriter.WriteLine("\t\tpublic static string Field" + Utility.FormatPascal(column.ProgrammaticAlias) + " = \"" + Utility.FormatPascal(column.ProgrammaticAlias) + "\";"); } streamWriter.WriteLine("\t\t#endregion"); streamWriter.WriteLine(); //为每列创建属性 streamWriter.WriteLine("\t\t#region 属性"); string privateName, publicName; for (int i = 0; i < table.Columns.Count; i++) { Column column = (Column)table.Columns[i]; privateName = "_" + Utility.FormatCamel(column.ProgrammaticAlias); publicName = Utility.FormatPascal(column.ProgrammaticAlias); streamWriter.WriteLine("\t\tprivate " + Utility.GetClassType(column.Type) + " " + privateName + ";"); streamWriter.WriteLine("\t\tpublic " + Utility.GetClassType(column.Type) + " " + publicName); streamWriter.WriteLine("\t\t{"); streamWriter.WriteLine("\t\t\tget{ return " + privateName + ";}"); streamWriter.WriteLine("\t\t\tset{ " + privateName + "=value;}"); streamWriter.WriteLine("\t\t}"); } streamWriter.WriteLine("\t\t#endregion"); streamWriter.WriteLine(); //添加构造函数 streamWriter.WriteLine("\t\t#region 构造函数"); streamWriter.WriteLine("\t\tpublic " + className + "(){}"); streamWriter.WriteLine(); streamWriter.WriteLine("\t\tpublic " + className + "(DataRow dr)"); streamWriter.WriteLine("\t\t{"); for (int i = 0; i < table.Columns.Count; i++) { Column column = (Column)table.Columns[i]; streamWriter.WriteLine("\t\t\tif (dr[Field" + Utility.FormatPascal(column.ProgrammaticAlias) + "] != DBNull.Value)"); streamWriter.WriteLine("\t\t\t{"); streamWriter.WriteLine("\t\t\t\t_" + Utility.FormatCamel(column.ProgrammaticAlias) + " = (" + Utility.GetClassType(column.Type) + ")dr[Field" + Utility.FormatPascal(column.ProgrammaticAlias) + "];"); streamWriter.WriteLine("\t\t\t}"); } streamWriter.WriteLine("\t\t}"); streamWriter.WriteLine("\t\t#endregion"); streamWriter.WriteLine(); // Close out the class and namespace streamWriter.WriteLine("\t}"); //创建集合类 CreateCollectionClass(table, streamWriter); streamWriter.WriteLine("}"); // Flush and close the stream streamWriter.Flush(); streamWriter.Close(); }