Exemplo n.º 1
0
            protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
            {
                var sequence = builder.BuildSequence(new BuildInfo(buildInfo, methodCall.Arguments[0]));
                var extract  = (LambdaExpression)methodCall.Arguments[1].Unwrap();
                var update   = methodCall.Arguments[2].Unwrap();

                if (sequence.SqlQuery.Set.Into == null)
                {
                    sequence.SqlQuery.Set.Into = (SqlTable)sequence.SqlQuery.From.Tables[0].Source;
                    sequence.SqlQuery.From.Tables.Clear();
                }

                if (update.NodeType == ExpressionType.Lambda)
                {
                    UpdateBuilder.ParseSet(builder, buildInfo, extract, (LambdaExpression)update, sequence);
                }
                else
                {
                    UpdateBuilder.ParseSet(builder, buildInfo, extract, update, sequence);
                }

                return(sequence);
            }