public override DbExpression Visit(DbUpdateExpression exp) { this._sqlBuilder.Append("UPDATE "); this.AppendTable(exp.Table); this._sqlBuilder.Append(" SET "); bool first = true; foreach (var item in exp.UpdateColumns) { if (first) first = false; else this._sqlBuilder.Append(","); this.QuoteName(item.Key.Name); this._sqlBuilder.Append("="); DbExpression valExp = item.Value.StripInvalidConvert(); AmendDbInfo(item.Key, valExp); DbValueExpressionTransformer.Transform(valExp).Accept(this); } this.BuildWhereState(exp.Condition); return exp; }
static DbExpression EnsureDbExpressionReturnCSharpBoolean(DbExpression exp) { return(DbValueExpressionTransformer.Transform(exp)); }
void AppendColumnSegment(DbColumnSegment seg) { DbValueExpressionTransformer.Transform(seg.Body).Accept(this); this._sqlBuilder.Append(" AS "); this.QuoteName(seg.Alias); }
public override DbExpression Visit(DbInsertExpression exp) { this._sqlBuilder.Append("INSERT INTO "); this.AppendTable(exp.Table); this._sqlBuilder.Append("("); bool first = true; foreach (var item in exp.InsertColumns) { if (first) first = false; else { this._sqlBuilder.Append(","); } this.QuoteName(item.Key.Name); } this._sqlBuilder.Append(")"); this._sqlBuilder.Append(" VALUES("); first = true; foreach (var item in exp.InsertColumns) { if (first) first = false; else { this._sqlBuilder.Append(","); } DbExpression valExp = item.Value.StripInvalidConvert(); AmendDbInfo(item.Key, valExp); DbValueExpressionTransformer.Transform(valExp).Accept(this); } this._sqlBuilder.Append(")"); if (exp.Returns.Count > 0) { this._sqlBuilder.Append(" RETURNING "); string outputParamNames = ""; for (int i = 0; i < exp.Returns.Count; i++) { if (i > 0) { this._sqlBuilder.Append(","); outputParamNames = outputParamNames + ","; } DbColumn outputColumn = exp.Returns[i]; string paramName = OracleUtils.GenOutputColumnParameterName(outputColumn.Name); DbParam outputParam = new DbParam() { Name = paramName, DbType = outputColumn.DbType, Precision = outputColumn.Precision, Scale = outputColumn.Scale, Size = outputColumn.Size, Value = DBNull.Value, Direction = ParamDirection.Output }; outputParam.Type = outputColumn.Type; this.QuoteName(outputColumn.Name); outputParamNames = outputParamNames + paramName; this._parameters.Add(outputParam); } this._sqlBuilder.Append(" INTO ", outputParamNames); } return exp; }