/// <summary>
 /// Generates the text for an Update builder.
 /// </summary>
 /// <param name="item">The item to generate the text for.</param>
 protected internal override void VisitUpdate(UpdateBuilder item)
 {
     forCommandType(CommandType.Update).visitUpdate(item);
 }
Example #2
0
 /// <summary>
 /// Visits a Update builder.
 /// </summary>
 /// <param name="item">The item to visit.</param>
 protected internal virtual void VisitUpdate(UpdateBuilder item)
 {
 }
 private void visitUpdate(UpdateBuilder item)
 {
     if (!item.Setters.Any())
     {
         throw new SQLGenerationException(Resources.NoSetters);
     }
     writer.Write("UPDATE ");
     forSourceContext(SourceReferenceType.Declaration).visitAliasedSource(item.Table);
     writer.Write(" SET ");
     forValueContext(ValueReferenceType.Reference).join(", ", item.Setters);
     if (item.WhereFilterGroup.HasFilters)
     {
         writer.Write(" WHERE ");
         IVisitableBuilder where = item.WhereFilterGroup;
         where.Accept(forSubCommand().forValueContext(ValueReferenceType.Reference));
     }
 }
Example #4
0
 private void buildSetterList(MatchResult result, UpdateBuilder builder)
 {
     MatchResult multiple = result.Matches[SqlGrammar.SetterList.Multiple.Name];
     if (multiple.IsMatch)
     {
         MatchResult first = multiple.Matches[SqlGrammar.SetterList.Multiple.First];
         Setter setter = buildSetter(first);
         builder.AddSetter(setter);
         MatchResult remaining = multiple.Matches[SqlGrammar.SetterList.Multiple.Remaining];
         buildSetterList(remaining, builder);
         return;
     }
     MatchResult single = result.Matches[SqlGrammar.SetterList.Single];
     if (single.IsMatch)
     {
         Setter setter = buildSetter(single);
         builder.AddSetter(setter);
         return;
     }
     throw new InvalidOperationException();
 }
Example #5
0
 private ICommand buildUpdateStatement(MatchResult result)
 {
     MatchResult tableResult = result.Matches[SqlGrammar.UpdateStatement.Table];
     Table table = buildTable(tableResult);
     string alias = null;
     MatchResult aliasExpressionResult = result.Matches[SqlGrammar.UpdateStatement.AliasExpression.Name];
     if (aliasExpressionResult.IsMatch)
     {
         MatchResult aliasResult = aliasExpressionResult.Matches[SqlGrammar.UpdateStatement.AliasExpression.Alias];
         alias = getToken(aliasResult);
     }
     UpdateBuilder builder = new UpdateBuilder(table, alias);
     SourceCollection collection = new SourceCollection();
     collection.AddSource(builder.Table.GetSourceName(), builder.Table);
     scope.Push(collection);
     MatchResult setterListResult = result.Matches[SqlGrammar.UpdateStatement.SetterList];
     buildSetterList(setterListResult, builder);
     MatchResult whereResult = result.Matches[SqlGrammar.UpdateStatement.Where.Name];
     if (whereResult.IsMatch)
     {
         MatchResult filterListResult = whereResult.Matches[SqlGrammar.UpdateStatement.Where.FilterList];
         IFilter innerFilter = buildOrFilter(filterListResult);
         builder.WhereFilterGroup.AddFilter(innerFilter);
         builder.WhereFilterGroup.Optimize();
     }
     scope.Pop();
     return builder;
 }
Example #6
0
 public void TestUpdate_Where()
 {
     Table table = new Table("Table");
     UpdateBuilder builder = new UpdateBuilder(table);
     builder.AddSetter(new Setter(builder.Table.Column("Column"), new NumericLiteral(1)));
     builder.AddWhere(new EqualToFilter(builder.Table.Column("Column"), new NumericLiteral(2)));
     Formatter formatter = new Formatter();
     string commandText = formatter.GetCommandText(builder);
     string expected = "UPDATE Table SET Column = 1 WHERE Column = 2";
     Assert.AreEqual(expected, commandText, "The wrong SQL was generated.");
 }
Example #7
0
 public void TestUpdate_MultipleSetters()
 {
     Table table = new Table("Table");
     UpdateBuilder builder = new UpdateBuilder(table);
     builder.AddSetter(new Setter(builder.Table.Column("Column1"), new NumericLiteral(1)));
     builder.AddSetter(new Setter(builder.Table.Column("Column2"), new StringLiteral("Hello")));
     Formatter formatter = new Formatter();
     string commandText = formatter.GetCommandText(builder);
     string expected = "UPDATE Table SET Column1 = 1, Column2 = 'Hello'";
     Assert.AreEqual(expected, commandText, "The wrong SQL was generated.");
 }
Example #8
0
 public void TestUpdate_AliasedTable_WithAs()
 {
     Table table = new Table("Table");
     UpdateBuilder builder = new UpdateBuilder(table, "t");
     builder.AddSetter(new Setter(builder.Table.Column("Column1"), new NumericLiteral(1)));
     builder.AddSetter(new Setter(builder.Table.Column("Column2"), new StringLiteral("Hello")));
     Formatter formatter = new Formatter();
     string commandText = formatter.GetCommandText(builder, new CommandOptions() { AliasColumnSourcesUsingAs = true });
     string expected = "UPDATE Table AS t SET Column1 = 1, Column2 = 'Hello'";
     Assert.AreEqual(expected, commandText, "The wrong SQL was generated.");
 }
 protected override void VisitUpdate(UpdateBuilder item)
 {
     var visitor = new UpdateRequestBuilderVisitor(Parameters, CrmMetadataProvider, Settings);
     IVisitableBuilder visitable = item;
     visitable.Accept(visitor);
     SetOperation(visitor.GetCommand());
 }
Example #10
0
 /// <summary>
 /// Visits a Update builder.
 /// </summary>
 /// <param name="item">The item to visit.</param>
 protected internal virtual void VisitUpdate(UpdateBuilder item)
 {
 }