/// <summary>
        /// 访问 <see cref="BatchCommandExpression"/> 表达式。
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        protected override Expression VisitBatch(BatchCommandExpression batch)
        {
            _isAsync = _isAsync || batch.IsAsync;

            var operation = batch.Operation;

            if (operation.Body is InsertCommandExpression insert)
            {
                if (batch.Arguments.Count == 0)
                {
                    return(_isAsync ? Expression.Constant(Task.FromResult(-1)) : Expression.Constant(-1));
                }

                var rewriter = insert.Update(insert.Table, VisitColumnAssignments(insert.Assignments));

                if (rewriter != insert)
                {
                    operation = Expression.Lambda(rewriter, operation.Parameters.ToArray());
                }
            }

            batch = batch.Update(batch.Input, operation, batch.Arguments);

            return(BuildExecuteBatch(batch));
        }
示例#2
0
        /// <summary>
        /// 浏览 <see cref="BatchCommandExpression"/> 表达式。
        /// </summary>
        /// <param name="batch"></param>
        /// <returns></returns>
        protected override Expression VisitBatch(BatchCommandExpression batch)
        {
            if (batch.Arguments.Count == 0)
            {
                return(Expression.Constant(-1));
            }

            var operation = batch.Operation;

            if (operation.Body is CommandExpression command)
            {
                if (command.NodeType == DbExpressionType.Insert)
                {
                    var insert   = command as InsertCommandExpression;
                    var rewriter = insert.Update(insert.Table, VisitColumnAssignments(insert.Assignments));

                    if (rewriter != insert)
                    {
                        operation = Expression.Lambda(rewriter, operation.Parameters.ToArray());
                    }
                }
            }

            batch = batch.Update(batch.Input, operation, batch.Arguments);

            return(BuildExecuteBatch(batch));
        }
示例#3
0
        protected override Expression VisitBatch(BatchCommandExpression batch)
        {
            var operation = batch.Operation;
            var command   = operation.Body as CommandExpression;

            if (command != null)
            {
                if (command.NodeType == DbExpressionType.Insert)
                {
                    var insert   = command as InsertCommandExpression;
                    var rewriter = insert.Update(insert.Table, VisitColumnAssignments(insert.Assignments));

                    if (rewriter != insert)
                    {
                        operation = LambdaExpression.Lambda(rewriter, operation.Parameters.ToArray());
                    }
                }
            }

            batch = batch.Update(batch.Input, operation);

            return(BuildExecuteBatch(batch));
        }