Exemple #1
0
        protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
        {
            var updateType = methodCall.Method.Name switch
            {
                nameof(LinqExtensions.UpdateWithOutput) => UpdateType.UpdateOutput,
                nameof(LinqExtensions.UpdateWithOutputInto) => UpdateType.UpdateOutputInto,
                _ => UpdateType.Update,
            };

            var sequence         = builder.BuildSequence(new (buildInfo, methodCall.Arguments[0]));
            var updateStatement  = sequence.Statement as SqlUpdateStatement ?? new SqlUpdateStatement(sequence.SelectQuery);
            var genericArguments = methodCall.Method.GetGenericArguments();
            var outputExpression = (LambdaExpression?)methodCall.GetArgumentByName("outputExpression")?.Unwrap();

            Type?objectType;

            sequence.Statement = updateStatement;