public override int ExecuteNonQuery()
            {
                string data;

                SetCommand(true);

                var queryContext = Query.Queries[QueryNumber];

                var q = _dataContext.GetSqlOptimizer().PrepareStatementForRemoting(queryContext.Statement,
                                                                                   _dataContext.MappingSchema, _evaluationContext);

                var currentParameters = q.CollectParameters();

                data = LinqServiceSerializer.Serialize(
                    _dataContext.SerializationMappingSchema,
                    q,
                    currentParameters,
                    _evaluationContext.ParameterValues,
                    QueryHints);

                if (_dataContext._batchCounter > 0)
                {
                    _dataContext._queryBatch !.Add(data);
                    return(-1);
                }

                _client = _dataContext.GetClient();

                return(_client.ExecuteNonQuery(_dataContext.Configuration, data));
            }
            public override int ExecuteNonQuery()
            {
                string data;

                // locks are bad, m'kay?
                lock (Query)
                {
                    SetCommand(true);

                    var queryContext = Query.Queries[QueryNumber];

                    var q = _dataContext.GetSqlOptimizer().OptimizeStatement(queryContext.Statement, _dataContext.MappingSchema, _dataContext.InlineParameters, true);

                    q.CollectParameters();

                    data = LinqServiceSerializer.Serialize(
                        _dataContext.SerializationMappingSchema,
                        q,
                        queryContext.GetParameters(),
                        QueryHints);
                }

                if (_dataContext._batchCounter > 0)
                {
                    _dataContext._queryBatch !.Add(data);
                    return(-1);
                }

                _client = _dataContext.GetClient();

                return(_client.ExecuteNonQuery(_dataContext.Configuration, data));
            }
            public override int ExecuteNonQuery()
            {
                SetCommand(true);

                var queryContext = Query.Queries[QueryNumber];

                var q    = queryContext.SelectQuery.ProcessParameters(_dataContext.MappingSchema);
                var data = LinqServiceSerializer.Serialize(
                    q,
                    q.IsParameterDependent ? q.Parameters.ToArray() : queryContext.GetParameters(),
                    QueryHints);

                if (_dataContext._batchCounter > 0)
                {
                    _dataContext._queryBatch.Add(data);
                    return(-1);
                }

                _client = _dataContext.GetClient();

                return(_client.ExecuteNonQuery(_dataContext.Configuration, data));
            }