public static String GetAllColumnNames <T>(this Table tableObj, String tableAlias = null, Boolean IsJoinColumn = false) where T : class
        {
            StringBuilder builder   = new StringBuilder();
            String        tableName = tableAlias;

            if (tableAlias == String.Empty)
            {
                tableName = null;
            }
            else if (tableAlias == null)
            {
                tableName = Table <T> .Schema.TableName;
            }
            Int32 count = Table <T> .Schema.ColumnNames.Count;

            if (IsJoinColumn)
            {
                foreach (var colSchema in Table <T> .Schema.GetColumnSchemas())
                {
                    String colName = "";
                    if (colSchema.IsJoinColumn)
                    {
                        //如果关联表名称为空,则不附加任何表名
                        if (String.IsNullOrEmpty(colSchema.JoinColumnTableName))
                        {
                            colName = OrmAssistor.BuildColumnName(colSchema, tableObj.DbProvider.ConflictFreeFormat);
                        }
                        else
                        {
                            colName = OrmAssistor.BuildColumnName(colSchema, tableObj.DbProvider.ConflictFreeFormat, colSchema.JoinColumnTableName);
                        }
                    }
                    else if (!colSchema.IsJoinColumn)
                    {
                        colName = OrmAssistor.BuildColumnName(colSchema, tableObj.DbProvider.ConflictFreeFormat, tableName);
                    }

                    builder.AppendFormat(colName);
                    builder.Append(SqlKeyWord.COMMA);
                }
            }
            else
            {
                foreach (var colSchema in Table <T> .Schema.GetColumnSchemas().Where(t => t.IsJoinColumn != true))
                {
                    String colName = OrmAssistor.BuildColumnName(colSchema, tableObj.DbProvider.ConflictFreeFormat, tableName);
                    builder.AppendFormat(colName);
                    builder.Append(SqlKeyWord.COMMA);
                }
            }
            var columnNames = builder.ToString();

            columnNames = columnNames.TrimEnd(SqlKeyWord.COMMA.ToCharArray());
            return(columnNames);
        }
        /// <summary>
        /// 增大指定数值字段的值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="tableObj"></param>
        /// <param name="field"></param>
        /// <param name="number"></param>
        /// <returns></returns>
        public static IDriver <T> Increment <T>(this Table <T> tableObj, Expression <Func <T, Object> > field, Double number = 1) where T : class
        {
            IDriver <T> driver = tableObj.DbProvider.Driver <T>();


            var expression = (field.Body as UnaryExpression);
            var mexp       = expression.Operand as MemberExpression;

            if (mexp == null)
            {
                throw new ArgumentException(nameof(field));
            }
            SchemaCache schema     = Table <T> .Schema;
            var         colSchema  = schema.GetColumnSchema(mexp.Member.Name);
            String      columnName = OrmAssistor.BuildColumnName(colSchema, tableObj.DbProvider.ConflictFreeFormat, schema.TableName);
            String      setSql     = columnName + SqlKeyWord.EQUAL + columnName + SqlKeyWord.PLUS + number.ToString();
            String      sql        = String.Format(BasicSqlFormat.UPDATE_FORMAT, schema.TableName, setSql);

            driver.SQLComponent.AppendSQL(sql);
            return(driver);
        }