/// <summary> /// 指定された型情報から全件更新クエリを生成します。 /// </summary> /// <typeparam name="T">テーブルの型</typeparam> /// <param name="properties">更新対象の列</param> /// <returns>生成されたSQL</returns> /// <remarks> /// [作成例] /// /// update TableName /// set /// Column1 = :Column1 /// Column2 = :Column2 /// </remarks> public static string CreateUpdateAllSql <T>(params Expression <Func <T, object> >[] properties) { //--- パラメーター var table = This.GetTableAttribute <T>(); var columnNames = properties == null || properties.Length == 0 ? This.GetProperties <T>().Select(x => x.Name) : properties.GetMemberNames(); var setParams = columnNames.Select(x => string.Format("\t{0} = :{0}", x)); var separator = string.Format(",{0}", Environment.NewLine); //--- SQL生成 var builder = new StringBuilder(); builder.AppendFormat("update {0}.{1}", table.Schema, table.Name); builder.AppendLine(); builder.AppendLine("set"); builder.Append(string.Join(separator, setParams)); return(builder.ToString()); }
/// <summary> /// 指定された型情報から全レコードを取得するクエリを生成します。 /// </summary> /// <typeparam name="T">テーブルの型</typeparam> /// <param name="properties">取得対象の列</param> /// <returns>生成されたSQL</returns> /// <remarks> /// [作成例] /// /// select * from ACNSM.NSM_M_COMMON /// </remarks> public static string CreateSelectAllSql <T>(params Expression <Func <T, object> >[] properties) { var table = This.GetTableAttribute <T>(); if (properties == null || properties.Length == 0) { return(string.Format("select * from {0}.{1}", table.Schema, table.Name)); } else { var columnNames = properties.GetMemberNames(); var separator = string.Format(",{0}\t", Environment.NewLine); var builder = new StringBuilder(); builder.AppendLine("select"); builder.Append("\t"); builder.AppendLine(string.Join(separator, columnNames)); builder.AppendFormat("from {0}.{1}", table.Schema, table.Name); return(builder.ToString()); } }
/// <summary> /// 指定された型情報からレコードの挿入クエリを生成します。 /// </summary> /// <typeparam name="T">テーブルの型</typeparam> /// <returns>生成されたSQL</returns> public static string CreateInsertSql <T>(DB dB = DB.SQLServer) { //--- 列情報などのパラメーターを生成 var properties = This.GetProperties <T>(); var columnNames = properties.Select(x => string.Format("\t{0}", x.Name)); IEnumerable <string> values = null; switch (dB) { case DB.SQLServer: values = properties.Select(x => string.Format("\t@{0}", x.Name)); break; case DB.Oracle: values = properties.Select(x => string.Format("\t:{0}", x.Name)); break; } //var values = properties.Select(x => string.Format("\t:{0}", x.Name)); var table = This.GetTableAttribute <T>(); var separator = string.Format(",{0}", Environment.NewLine); //--- SQL組み立て var builder = new StringBuilder(); builder.AppendFormat("insert into {0}.{1}", table.Schema, table.Name); builder.AppendLine(); builder.AppendLine("("); builder.AppendLine(string.Join(separator, columnNames)); builder.AppendLine(")"); builder.AppendLine("values"); builder.AppendLine("("); builder.AppendLine(string.Join(separator, values)); builder.Append(")"); return(builder.ToString()); }
/// <summary> /// 指定された型情報からテーブルに含まれるレコードの件数を取得するクエリを生成します。 /// </summary> /// <typeparam name="T">テーブルの型</typeparam> /// <returns>生成されたSQL</returns> public static string CreateCountSql <T>() { var table = This.GetTableAttribute <T>(); return(string.Format("select count(*) as value from {0}.{1}", table.Schema, table.Name)); }
/// <summary> /// 指定された型情報から全レコードを削除するクエリを生成します。 /// </summary> /// <typeparam name="T">テーブルの型</typeparam> /// <returns>生成されたSQL</returns> /// <remarks> /// [作成例] /// /// delete from ACNSM.NSM_M_COMMON /// </remarks> public static string CreateDeleteAllSql <T>() { var table = This.GetTableAttribute <T>(); return(string.Format("delete from {0}.{1}", table.Schema, table.Name)); }