Hi Ashish,
Below is the code by which you can retrieve more that 5000 records, create a console application and test it
static void Main(string[] args)
{
var fetch = "<fetch {0}>" +
" <entity name='new_zipcode' >" +
" <attribute name='new_zipcodeid' />" +
" <attribute name='new_name' />" +
" </entity>" +
"</fetch>";
List<Entity> accountCol = RetrieveAllRecords(_serviceProxy, fetch);
int count = accountCol.Count / 1000;
for (int i = 0; i < count; i++)
{
var query = from p in accountCol.Skip(i * 1000).Take(1000)
select p;
// Create an ExecuteMultipleRequest object.
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()
};
// Add a UpdateRequest for each entity to the request collection.
foreach (var entity in query)
{
entity.Attributes["new_name"] = "testnew";
UpdateRequest updateRequest = new UpdateRequest { Target = entity };
multipleRequest.Requests.Add(updateRequest);
}
// Execute all the requests in the request collection using a single web method call.
ExecuteMultipleResponse multipleResponse = (ExecuteMultipleResponse)_serviceProxy.Execute(multipleRequest);
}
}
public static List<Entity> RetrieveAllRecords(IOrganizationService service, string fetch)
{
var moreRecords = false;
int page = 1;
var cookie = string.Empty;
List<Entity> Entities = new List<Entity>();
do
{
var xml = string.Format(fetch, cookie);
var collection = service.RetrieveMultiple(new FetchExpression(xml));
if (collection.Entities.Count >= 0)
Entities.AddRange(collection.Entities);
moreRecords = collection.MoreRecords;
if (moreRecords)
{
page++;
cookie = string.Format("paging-cookie='{0}' page='{1}'", System.Security.SecurityElement.Escape(collection.PagingCookie), page);
}
} while (moreRecords);
return Entities;
}
Thanks,
Shahbaaz