private static string BuildOperators(Operator @operator, IEntityMapping mapping, IDictionary <string, object> parameters) { var writer = new SqlWriter(); var statement = WhereWriter <TEntity> .CreateStatement(@operator, mapping); parameters.AddRange(statement.Parameters); writer.Write(statement.Text); return(writer.ToString()); }
public static Statement CreateStatement(Update update, IEntityMapping mapping) { var writer = new SqlWriter(); var parameters = new Dictionary <string, object>(); writer.Update.QuotedName(update.Table.Name).Set. ParameterAssignmentList(x => x.Comma.Flush(), update.Assignment.ToDictionary(x => x.Key, x => parameters.AddWithUniquelyNamedKey(x.Value))); var where = WhereWriter <TEntity> .CreateStatement(update.Where, mapping); writer.Where.Write(where.Text); parameters.AddRange(where.Parameters); return(new Statement(writer.ToString(), Statement.StatementType.Text, Statement.ResultType.None, parameters)); }
public static Statement CreateStatement(Sync sync, IEntityMapping mapping) { var writer = new SqlWriter(); IDictionary <string, object> parameters = new Dictionary <string, object>(); var fields = sync.Target.Projection.Zip(sync.Source.Projection, (t, s) => new { Target = t.Projection, Source = s.Projection }) .Where(x => !sync.ExcludedFields.Any(y => (y.HasKey ? y.Key : y.Name) == (x.Target.Field.HasKey ? x.Target.Field.Key : x.Target.Field.Name))).ToList(); writer.Update.QuotedName(sync.Target.From.Alias).Set .ExpressionList(x => x.Comma.Flush(), fields, (f, s) => s. Write(ProjectionWriter <TEntity> .CreateStatement(f.Target, mapping).MergeParameters(parameters).Text).Equal. Write(ProjectionWriter <TEntity> .CreateStatement(f.Source, mapping).MergeParameters(parameters).Text)) .From.QuotedName(sync.Target.From.Table.Name).QuotedName(sync.Target.From.Alias).Inner.Join .QuotedName(sync.Source.From.Table.Name).QuotedName(sync.Source.From.Alias) .On.Write(ProjectionWriter <TEntity> .CreateStatement(sync.TargetKey, mapping).MergeParameters(parameters).Text).Equal .Write(ProjectionWriter <TEntity> .CreateStatement(sync.SourceKey, mapping).MergeParameters(parameters).Text) .Do(sync.Source.HasWhere, x => x.And.Write(WhereWriter <TEntity> .CreateStatement(sync.Source.Where, mapping).MergeParameters(parameters).Text)) .Do(sync.Target.HasWhere, x => x.Where.Write(WhereWriter <TEntity> .CreateStatement(sync.Target.Where, mapping).MergeParameters(parameters).Text)); return(new Statement(writer.ToString(), Statement.StatementType.Text, Statement.ResultType.None, parameters)); }