AddOrderByParams|通过实体Entity、字段名和asc/desc添加排序

  • 
            /// <summary>
            /// 添加 order by - AddOrderByParams +
            /// </summary>
            /// <param name="entity">表</param>
            /// <param name="infoName">字段名</param>
            /// <param name="orderBy">asc/desc|如果为空则按asc排序,否则如果全小写不是asc/desc,抛出异常</param>
            public void AddOrderByParams(BaseEntity entity, string infoName, string orderBy)
            {
                if(entity==null)
                {
    
                    throw new Exception
                        (
                            "方法:"
                            + MethodBase.GetCurrentMethod().ReflectedType.FullName
                            + " "
                            + MethodBase.GetCurrentMethod().ToString()
                            + " 发生异常:"
                            + "传入参数:"
                            + "BaseEntity entity"
                            + "为null。"
                        );
                }
    
                if (infoName == null || infoName.Length == 0)
                {
    
                    throw new Exception
                        (
                            "方法:"
                            + MethodBase.GetCurrentMethod().ReflectedType.FullName
                            + " "
                            + MethodBase.GetCurrentMethod().ToString()
                            + " 发生异常:"
                            + "传入的字符串参数:"
                            + "string infoName"
                            + "为null或为空。"
                        );
                }
    
                EntityFieldInfo info = entity.GetExistEntityFieldInfo(infoName);
    
    
                OrderByItem item = new OrderByItem(info);
    
                item.IsOrderBy = true;
    
                m_ListIOrderByItem.Add(item);
    
    
    
                if (orderBy == null || orderBy.Length == 0)
                {
                    item.emOrderByValue
                        = Enums.OrderBy.EmOrderBy.ASC;
    
                    return;
                }
    
                orderBy = orderBy.Trim().ToLower();
    
                if (orderBy.Length == 0)
                {
                    item.emOrderByValue
                        = Enums.OrderBy.EmOrderBy.ASC;
    
                    return;
                }
    
                if (orderBy == "asc")
                {
                    item.emOrderByValue
                        = Enums.OrderBy.EmOrderBy.ASC;
    
                    return;
    
                }
    
                if (orderBy == "desc")
                {
                    item.emOrderByValue
                        = Enums.OrderBy.EmOrderBy.DESC;
    
                    return;
                }
    
    
                throw new Exception
                    (
                        "方法:"
                        + MethodBase.GetCurrentMethod().ReflectedType.FullName
                        + " "
                        + MethodBase.GetCurrentMethod().ToString()
                        + " 发生异常:"
                        + "传入参数:"
                        + "orderBy[" + orderBy + "]位无效的排序值"
                    );
            }
    
    
  • 
    tc.TheName asc
    
    
    
  •  
    #region TheSQLGet
    
        /// <summary>
        /// 获得输出的SQL语句
        /// </summary>
        /// <param name="xdbHelper"></param>
        /// <returns></returns>
        protected override string TheSQLGet(DBHelper xdbHelper)
        {
            #region 逻辑代码 
    
            string theResult = null;
    
            // 标识是否创建或打开数据库链接 //
            bool bIsCreate = true;
    
            if (xdbHelper == null)
            {
                // 如果 xdbHelper 为null //
                // 则new一个数据库操作实体 //
                xdbHelper
                    =
                    SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
            }
            else
            {
                // 如果 xdbHelper 不为null //
                // 判断 xdbHelper是否打开链接 //
                // 相当于是否执行 xdbHelper.OpenDBHelper(); //
                bIsCreate = xdbHelper.IsNotOpen();
            }
    
            try
            {
                if (bIsCreate)
                {
                    // 没有打开,则打开链接 //
                    xdbHelper.OpenDBHelper();
                }
    
                // 业务逻辑操作实体 //
                // insert/update/delete等操作 //
                SlowX.ExamLib.Business.UTB_EXAM_STUDENT
                   bll
                   =
                   SlowX.ExamLib.Business.UTB_EXAM_STUDENT.instance;
    
                // 组合SQL的逻辑实体 //
                SlowX.ExamLib.Entity.UTB_EXAM_STUDENT
                    entity
                    =
                    new SlowX.ExamLib.Entity.UTB_EXAM_STUDENT();
    
                // 组合SQL的逻辑实体 //
                SlowX.ExamLib.Entity.UTB_EXAM_CLASS
                    entity_Class
                    =
                    new SlowX.ExamLib.Entity.UTB_EXAM_CLASS();
    
                ISelectDriver iselect = entity;
                IFromTableDriver ifrom = entity;
                IWhereDriver iwhere = entity;
                IOrderByDriver iorder = entity;
    
                // 设置Class表字段的表名前缀 //
                entity_Class.selectPreName = "C__";
    
                // 将UTB_EXAM_CLASS加入查询, UTB_EXAM_CLASS tc //
                ifrom.AddIFromTableItemWithBaseEntity("tc", entity_Class);
    
                // UTB_EXAM_STUDENT ==> select 输出 //
                iselect.AddISelectItemWithBaseEntity(entity);
    
                // UTB_EXAM_CLASS ==> select 输出 TheName as C__TheName //
                iselect.AddISelectItemWithEntityFieldInfo(entity_Class._TheName);
    
                // t.ClassId == tc.ID //
                iwhere.WhereAddInfo(entity._ClassId, entity_Class._ID);
    
    
                // ===调用代码=== //  
                iorder.AddOrderByParams(entity_Class, "TheName", "asc");
    
                // 其他排序:TheName asc //
                iorder.AddOrderByEm(entity._TheName, SlowX.Core.Enums.OrderBy.EmOrderBy.ASC);
                // 其他排序:ID asc //
                iorder.AddOrderByEm(entity._ID, SlowX.Core.Enums.OrderBy.EmOrderBy.ASC);
    
                // 执行List操作 //
                // 这里做DEMO,仅打印输出的SQL语句 //
                // bll.List(entity, xdbHelper);
                theResult
                    =
                    bll.i_iBuildSQL.BuildSqlList(entity, xdbHelper);
    
    
                if (bIsCreate)
                {
                    // 关闭数据库链接 //
                    // 如果用了事务,提交数据库链接 //
                    xdbHelper.EndDBHelper();
                }
            }
            catch (Exception err)
            {
                if (bIsCreate)
                {
                    // 关闭数据库链接 //
                    // 如果用了事务,回滚数据库链接 //
                    xdbHelper.TranDBHelper();
                }
    
                throw err;
            }
            finally
            {
                if (bIsCreate)
                {
                    // 判断数据库操作是否正确关闭 //
                    // 如果没有正确关闭,则关闭并抛出异常提示代码缺陷 //
                    xdbHelper.FinallyDBHelper();
                }
            }
    
            return theResult;
    
            #endregion 逻辑代码 
        }
    
        #endregion TheSQLGet
    
    
    
    
    
  •  
    
    select 
    t.ID, t.TheName, t.ClassId, 
    t.CreateTime, t.UpdateTime, 
    tc.TheName as C__TheName
    from UTB_EXAM_STUDENT t , 
    UTB_EXAM_CLASS tc
    where t.ClassId = tc.ID
    order by 
    tc.TheName asc, t.TheName asc, t.ID asc
    
    
    
    select 
    t.ID, t.TheName, t.ClassId, 
    t.CreateTime, t.UpdateTime, 
    tc.TheName as C__TheName
    from UTB_EXAM_STUDENT t , 
    UTB_EXAM_CLASS tc
    where t.ClassId = tc.ID
    order by 
    tc.TheName asc, t.TheName asc, t.ID asc