/// <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 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> /// 创建根据外键删除的方法 /// </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}"); } }