Beispiel #1
0
        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());
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }