Salesforce | Fetch more than 2000 records using REST asynchronously in C#

Author - Neha Mishra
15.09.2017
|
0 Comments
|

Salesforce gives us a limit of 2000 records to fetch from it using REST calls. But sometimes we need to get all the records from Salesforce. In Salesforce, there is a limit of API calls. By default, it gives 15,000 for a sandbox. Making salesforce call, again and again, consumes lots of API calls. One needs to purchase a license to extend this limit. Then why not optimize the code?

ForceClient library (automatically comes with Salesforce.Force NuGet package) provides a method that makes an asynchronous call and does not have the restriction of fetching only 2000 records. It can fetch all the records in one go.

See below code :

public static async Task<List> getallrecords(ForceClient client)
  {
     var list = new List();
        try
        {
        string qry = "select Id from CustomObject";

        var results = await client.QueryAsync(qry);
        var totalSize = results.TotalSize;
        list.AddRange(results.Records);
        var nextRecordsUrl = results.NextRecordsUrl;

        if (!string.IsNullOrEmpty(nextRecordsUrl))
        {
        System.Diagnostics.Debug.WriteLine("next record url.");
        while (true)
             {
               var asynlist = await 
               client.QueryContinuationAsync(nextRecordsUrl);
               totalSize = asynlist.TotalSize;
               System.Diagnostics.Debug.WriteLine("Next " + totalSize+ 
                             "records.");

                list.AddRange(asynlist.Records); 
                if (string.IsNullOrEmpty(asynlist.NextRecordsUrl)) 
                                 break;

                nextRecordsUrl = asynlist.NextRecordsUrl;
                }
            	}
            	System.Diagnostics.Debug.WriteLine("total  = " + totalSize);
        	}
        	catch (Exception ex)
        	{
            	System.Diagnostics.Debug.WriteLine(ex.StackTrace);
        	}
        	return list ;
    }

You can find the more details regarding the ForceClient library methods at the link “https://developer.salesforce.com/blogs/developer-relations/2014/09/nothing-but-dotnet-force-toolkit-dotnet.html”.

Webner Solutions is a Software Development company focused on developing Insurance Agency Management Systems, Learning Management Systems and Salesforce apps. Contact us at dev@webners.com for your Insurance, eLearning and Salesforce applications.

Leave a Reply

Your email address will not be published. Required fields are marked *