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); }