コード例 #1
0
ファイル: PrimitiveSql.cs プロジェクト: st-1297/DotNetAsp
        /// <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());
        }
コード例 #2
0
ファイル: PrimitiveSql.cs プロジェクト: st-1297/DotNetAsp
        /// <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());
            }
        }
コード例 #3
0
ファイル: PrimitiveSql.cs プロジェクト: st-1297/DotNetAsp
        /// <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());
        }
コード例 #4
0
ファイル: PrimitiveSql.cs プロジェクト: st-1297/DotNetAsp
        /// <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));
        }
コード例 #5
0
ファイル: PrimitiveSql.cs プロジェクト: st-1297/DotNetAsp
        /// <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));
        }