public override TSqlQuery Compile(ClauseCompilationContext context) { if (Value == null) { if (!NullValueComparisonOperators.Contains(Operation)) { throw new InvalidOperationException($"Invalid operation for null value. Should be one of {string.Join(", ", NullValueComparisonOperators)}"); } return(GetNullValueQuery()); } Dictionary <string, object> parameters = null; string valueString; if (Value is TSqlStatement tsqlStatement) { valueString = tsqlStatement.GetDescription(); } else { string parameterName = SqlBuilderHelper.GetUniqueParameterName(SqlBuilderHelper.ComposeParameterName(Field.TableName, Field.FieldName), context); context.ParameterNames.Add(parameterName); parameters = new Dictionary <string, object> { { parameterName, Value } }; valueString = SqlBuilderHelper.PrepareParameterName(parameterName); } return(new TSqlQuery( $"{Field.GetFullName()} {SqlBuilderHelper.ConvertBinaryOperationToString(Operation)} {valueString}", parameters )); }
public override TSqlQuery Compile(ClauseCompilationContext context) { string query = $"{TSqlSyntax.Offset} {Offset} {TSqlSyntax.Rows}" + $" {TSqlSyntax.Fetch} {TSqlSyntax.Next} {Fetch} {TSqlSyntax.Rows} {TSqlSyntax.Only}"; return(new TSqlQuery(query)); }
public override TSqlQuery Compile(ClauseCompilationContext context) { Dictionary <string, object> parameters = new Dictionary <string, object>(); string properties = string.Join(TSqlSyntax.FieldsDelimeter, FieldWithValues.Keys); string values = string.Join(TSqlSyntax.FieldsDelimeter, FieldWithValues.Keys.Select(fieldName => { object fieldValue = FieldWithValues[fieldName]; if (fieldValue is TSqlStatement tsqlStatement) { return(tsqlStatement.GetDescription()); } string parameterName = SqlBuilderHelper.ComposeParameterName(TableName, fieldName, context); context.ParameterNames.Add(parameterName); parameters.Add(parameterName, FieldWithValues[fieldName]); return(SqlBuilderHelper.PrepareParameterName(parameterName)); })); StringBuilder sb = new StringBuilder(); sb .AppendLine($"{TSqlSyntax.Insert} {SqlBuilderHelper.PrepareTableName(TableName)} ({properties})") .AppendLine($"{TSqlSyntax.Values} ({values})"); return(new TSqlQuery(sb.ToString(), parameters)); }
public override TSqlQuery Compile(ClauseCompilationContext context) { IEnumerable <string> items = _orderItems.Select(i => i.Compile()); return(new TSqlQuery( $"{TSqlSyntax.OrderBy} {string.Join(TSqlSyntax.FieldsDelimeter, items)}" )); }
public override TSqlQuery Compile(ClauseCompilationContext context) { TSqlQuery innerQuery = Clause.Compile(context); return(new TSqlQuery( $"{TSqlSyntax.Where} {innerQuery.Query}", new Dictionary <string, object>(innerQuery.Parameters) )); }
public override TSqlQuery Compile(ClauseCompilationContext context) { string parameterName = SqlBuilderHelper.ComposeParameterName(Field.TableName, Field.FieldName, context); context.ParameterNames.Add(parameterName); Dictionary <string, object> parameters = new Dictionary <string, object> { { parameterName, Value } }; string query = $"{Field.GetFullName()} {TSqlSyntax.In} {SqlBuilderHelper.PrepareParameterName(parameterName)}"; return(new TSqlQuery(query, parameters)); }
public override TSqlQuery Compile(ClauseCompilationContext context) { StringBuilder sb = new StringBuilder(); sb.Append($"{JoinType.GetDescription()} {TSqlSyntax.Join} {SqlBuilderHelper.PrepareTableName(JoinedTable)}"); if (TableHints.HasValue) { string hints = SqlBuilderHelper.GetTableHintString(TableHints.Value); sb.Append(" "); sb.Append($"{TSqlSyntax.With}({hints})"); } sb.Append(" "); sb.Append($"{TSqlSyntax.On} {LeftField.GetFullName()} {SqlBuilderHelper.ConvertBinaryOperationToString(Operation)} {RightField.GetFullName()}"); return(new TSqlQuery(sb.ToString())); }
public override TSqlQuery Compile(ClauseCompilationContext context) { Dictionary <string, object> parameters = new Dictionary <string, object>(); StringBuilder queryString = new StringBuilder(); foreach (Clause clause in InnerClauses) { if (queryString.Length > 0) { queryString.Append($" {SqlBuilderHelper.ConvertBooleanOperationToString(BooleanOperation)} "); } TSqlQuery clauseQuery = clause.Compile(context); queryString.Append(clauseQuery.Query); foreach (KeyValuePair <string, object> item in clauseQuery.Parameters) { parameters.Add(item.Key, item.Value); } } return(new TSqlQuery($"({queryString})", parameters)); }
public override TSqlQuery Compile(ClauseCompilationContext context) { string concatenatedFields = TSqlSyntax.AllFieldsSymbol; if (SelectItems != null & SelectItems.Any()) { concatenatedFields = string.Join( TSqlSyntax.FieldsDelimeter, SelectItems.Select(f => f.Compile()) ); } StringBuilder sb = new StringBuilder(); sb.Append($"{TSqlSyntax.Select}"); if (Distinct) { sb.Append(" "); sb.Append($"{TSqlSyntax.Distinct}"); } if (topCount.HasValue) { sb.Append(" "); sb.Append($"{TSqlSyntax.Top} {topCount}"); } sb.Append(" "); sb.Append($"{concatenatedFields} {TSqlSyntax.From} {SqlBuilderHelper.PrepareTableName(TableName)}"); if (TableHints.HasValue) { string hints = SqlBuilderHelper.GetTableHintString(TableHints.Value); sb.Append(" "); sb.Append($"{TSqlSyntax.With}({hints})"); } return(new TSqlQuery(sb.ToString())); }
public override TSqlQuery Compile(ClauseCompilationContext context) { Dictionary <string, object> parameters = new Dictionary <string, object>(); StringBuilder sb = new StringBuilder(); foreach (UpdateClauseItem item in UpdateItems) { if (sb.Length > 0) { sb.Append(TSqlSyntax.FieldsDelimeter); } string fieldName = SqlBuilderHelper.PrepareFieldName(TableName, item.FieldName); string assignmentOperatorString = SqlBuilderHelper.ConvertAssignmentOperatorToString(item.AssignmentOperator); string valueString; if (item.Value is TSqlStatement tsqlStatement) { valueString = tsqlStatement.GetDescription(); } else { string parameterName = SqlBuilderHelper.ComposeParameterName(TableName, item.FieldName, context); context.ParameterNames.Add(parameterName); parameters.Add(parameterName, item.Value); valueString = SqlBuilderHelper.PrepareParameterName(parameterName); } sb.AppendLine($"{fieldName} {assignmentOperatorString} {valueString}"); } return(new TSqlQuery( $"{TSqlSyntax.Update} {SqlBuilderHelper.PrepareTableName(TableName)} {TSqlSyntax.Set} {sb}", parameters )); }
public override TSqlQuery Compile(ClauseCompilationContext context) { return(new TSqlQuery($"{TSqlSyntax.Select} {TSqlStatement.RowCountVariable.GetDescription()}", null)); }
public override TSqlQuery Compile(ClauseCompilationContext context) { string query = $"{TSqlSyntax.Delete} {TSqlSyntax.From} {SqlBuilderHelper.PrepareTableName(TableName)}"; return(new TSqlQuery(query)); }
public override TSqlQuery Compile(ClauseCompilationContext context) { return(new TSqlQuery($"{TSqlSyntax.Select} {TSqlStatement.ScopeIdentityCall.GetDescription()}", null)); }
public TSqlBuilder() { _clauses = new List <Clause>(); _clauseCompilationContext = new ClauseCompilationContext(); }