Update records using Execute Multiple Request



public void ReadCustomerData(IOrganizationService service)
{
int count = 0;
ExecuteMultipleRequest multipleRequest = BulkUpdateRequest();
QueryExpression query = new QueryExpression()
{
ColumnSet = new ColumnSet(new string[] { "new_start", "new_end", "new_expected" }),
EntityName = "new_reporte"
};
ConditionExpression cond = new ConditionExpression("new_startdate", ConditionOperator.Null);
FilterExpression filter = new FilterExpression();
filter.AddCondition(cond);
query.Criteria = filter;
EntityCollection results = service.RetrieveMultiple(query);
if (results != null && results.Entities.Count > 0)
{
foreach (Entity res in results.Entities)
{
Entity ent = new Entity()
{
LogicalName = res.LogicalName,
Id = res.Id
};
string satart = res.Attributes.Contains("new_start") ? res.GetAttributeValue("new_start") : "";
string end = res.Attributes.Contains("new_end") ? res.GetAttributeValue("new_end") : "";
string estimatedDate = res.Attributes.Contains("new_expected") ? res.GetAttributeValue("new_expected") : "";
if (!string.IsNullOrEmpty(satart))
{
var list = satart.Split(' ');
if (list != null && list.Length > 0)
{
DateTime dt = DateTime.ParseExact(list[0], "MM/dd/yyyy", CultureInfo.InvariantCulture);
ent["new_startdate"] = Convert.ToDateTime(dt);
}
}
if (!string.IsNullOrEmpty(end))
{
var list = end.Split(' ');
if (list != null && list.Length > 0)
{
DateTime dt = DateTime.ParseExact(list[0], "MM/dd/yyyy", CultureInfo.InvariantCulture);
ent["new_enddate"] = Convert.ToDateTime(dt);
}
}
if (!string.IsNullOrEmpty(estimatedDate))
{
var list = estimatedDate.Split(' ');
if (list != null && list.Length > 0)
{
DateTime dt = DateTime.ParseExact(list[0], "MM/dd/yyyy", CultureInfo.InvariantCulture);
ent["new_expected"] = Convert.ToDateTime(dt);
}
}
UpdateRequest updateRequest = new UpdateRequest()
{
Target = ent
};
multipleRequest.Requests.Add(updateRequest);
count++;
Console.WriteLine(count);
if (count == 1000)
{
BulkCreateResponse(service, multipleRequest);
count = 0;
multipleRequest = BulkUpdateRequest();
}
}
if (multipleRequest.Requests.Count < 1000)
BulkCreateResponse(service, multipleRequest);
Console.WriteLine(count);
// Console.ReadLine();
}
}
public ExecuteMultipleRequest BulkUpdateRequest()
{
var multipleRequest = new ExecuteMultipleRequest()
{
// Assign settings that define execution behavior: continue on error, return responses.
Settings = new ExecuteMultipleSettings()
{
ContinueOnError = false,
ReturnResponses = true
},
// Create an empty organization request collection.
Requests = new OrganizationRequestCollection()
};
return multipleRequest;
// Execute all the requests in the request collection using a single web method call.
}
public void BulkUpdateResponse(IOrganizationService service, ExecuteMultipleRequest multipleRequest)
{
ExecuteMultipleResponse multipleResponse = (ExecuteMultipleResponse)service.Execute(multipleRequest);
}