Esempio n. 1
0
        public void Commit()
        {
            var transactionRequest = new ExecuteTransactionRequest
            {
                Requests = new OrganizationRequestCollection()
            };

            foreach (var entity in Added.Keys)
            {
                Added[entity].PersistAdded(entity);
            }
            foreach (var entity in Modified.Keys)
            {
                Modified[entity].PersistUpdated(entity);
            }
            foreach (var entity in Removed.Keys)
            {
                Removed[entity].PersistRemoved(entity);
            }

            Added.Clear();
            Modified.Clear();
            Removed.Clear();

            try
            {
                for (int i = 0; i < Requests.Count; i += _batchSize)
                {
                    var requestBatch = Requests.Skip(i).Take(_batchSize);

                    transactionRequest.Requests.AddRange(requestBatch);
                    _service.Execute(transactionRequest);

                    transactionRequest = new ExecuteTransactionRequest
                    {
                        Requests = new OrganizationRequestCollection()
                    };
                }
            }
            catch (FaultException <OrganizationServiceFault> fault)
            {
                if (fault.Detail.ErrorDetails.Contains("MaxBatchSize"))
                {
                    int maxBatchSize = Convert.ToInt32(fault.Detail.ErrorDetails["MaxBatchSize"]);
                    if (maxBatchSize < transactionRequest.Requests.Count)
                    {
                        var errMsg =
                            string.Format(
                                "The input request collection contains {0} requests, which exceeds the maximum allowed {1}",
                                transactionRequest.Requests.Count, maxBatchSize);
                        throw new InvalidOperationException(errMsg, fault);
                    }
                }

                throw;
            }
        }
Esempio n. 2
0
        public void Reset()
        {
            MoreComing = false;

            Items.Clear();
            Added.Clear();
            Modified.Clear();
            Deleted.Clear();
        }