public async Task QueryAsyncEnumeratorSmallBatch() { ForceClient client = await forceClientFixture.GetForceClient(); var contactsEnumerable = client.QueryAsync <SfContact>("SELECT Id FROM Contact LIMIT 1000", batchSize: 200); int count = 0; SfContact contact = null; using (IAsyncEnumerator <SfContact> contactsEnumerator = contactsEnumerable.GetEnumerator()) { // Assert.NotNull(contactsEnumerator); while (await contactsEnumerator.MoveNext()) { contact = contactsEnumerator.Current; count++; #if DEBUG if (count % 200 == 0) { Console.WriteLine("QueryAsyncEnumeratorSmallBatch: processed {0} records", count.ToString()); } #endif } } // recordcount needs be greater than 200 to ensure that more than one batch was retrieved // and that the async retrieval occurred. Assert.True(count > 200); Assert.NotNull(contact.Id); }
public async Task QueryAsyncEnumeratorNoResults() { ForceClient client = await forceClientFixture.GetForceClient(); var contactsEnumerable = client.QueryAsync <SfContact>("SELECT Id FROM Contact WHERE Name='xyz123foobar'"); SfContact contact = null; using (IAsyncEnumerator <SfContact> contactsEnumerator = contactsEnumerable.GetEnumerator()) { while (await contactsEnumerator.MoveNext()) { contact = contactsEnumerator.Current; } } Assert.Null(contact); }
public async Task QueryAsyncEnumerator() { ForceClient client = await forceClientFixture.GetForceClient(); var contactsEnumerable = client.QueryAsync <SfContact>("SELECT Id FROM Contact LIMIT 3000"); SfContact contact = null; using (IAsyncEnumerator <SfContact> contactsEnumerator = contactsEnumerable.GetEnumerator()) { while (await contactsEnumerator.MoveNext()) { contact = contactsEnumerator.Current; } } Assert.NotNull(contact.Id); }
public async Task QueryAsyncEnumeratorCustombBatchSize() { ForceClient client = await forceClientFixture.GetForceClient(); var contactsEnumerable = client.QueryAsync <SfContact>("SELECT Id FROM Contact LIMIT 3000", batchSize: 200); int count = 0; using (IAsyncEnumerator <SfContact> contactsEnumerator = contactsEnumerable.GetEnumerator()) { while (await contactsEnumerator.MoveNext()) { SfContact contact = contactsEnumerator.Current; count++; } } Assert.True(count > 0); }
public async Task QueryAsync_single_result() { ForceClient client = await forceClientFixture.GetForceClient(); var contactsEnumerable = client.QueryAsync <SfContact>("SELECT Id FROM Contact LIMIT 1"); int count = 0; SfContact contact = null; await using (IAsyncEnumerator <SfContact> contactsEnumerator = contactsEnumerable.GetAsyncEnumerator()) { while (await contactsEnumerator.MoveNextAsync()) { contact = contactsEnumerator.Current; count++; } } Assert.Equal(1, count); Assert.NotNull(contact.Id); }
public async Task QueryAsyncEnumerator() { ForceClient client = await forceClientFixture.GetForceClient(); var contactsEnumerable = client.QueryAsync <SfContact>("SELECT Id FROM Contact LIMIT 3000"); int count = 0; SfContact contact = null; using (IAsyncEnumerator <SfContact> contactsEnumerator = contactsEnumerable.GetEnumerator()) { while (await contactsEnumerator.MoveNext()) { contact = contactsEnumerator.Current; count++; } } // recordcount needs be greater than 2000 to ensure that more than one batch was retrieved // and that the async retrieval occurred. Assert.True(count > 2000); Assert.NotNull(contact.Id); }
private static async Task RunTest() { AuthInfo authInfo = GetAuthInfo(); AuthenticationClient auth = new AuthenticationClient(authInfo.ApiVersion); try { await auth.UsernamePasswordAsync(authInfo.ClientId, authInfo.ClientSecret, authInfo.Username, authInfo.Password, authInfo.TokenRequestEndpoint); Console.WriteLine("Successfully connected to Salesforce"); } catch (ForceAuthException ex) { Console.WriteLine("ForceAuthException: " + ex.Message); return; } catch (Exception ex) { Console.WriteLine("General Exception at login: "******"SELECT Id, Name, SystemModstamp, Account.Id, Account.Name, Account.SystemModstamp FROM Contact", false); List <CustomAccount> customAccounts = await client.Query <CustomAccount>("SELECT Id, CustomerPriority__c FROM Account", false); //Using a dynamic object dynamic dynoObject = new ExpandoObject(); dynoObject.Name = "Test Account"; dynoObject.Description = "Test Account description"; CreateResponse resp = await client.CreateRecord <dynamic>("Account", dynoObject); // Asynchronous large result sets and batching: // Query<T> method will retrieve the full result set before returning. // In cases where you are working with large result sets, you may want to retrieve the batches asynchronously for better performance. // First create the async enumerable. At this point, no query has been executed. // batchSize can be omitted to use the default (usually 2000), or given a custom value between 200 and 2000. IAsyncEnumerable <SfContact> contactsEnumerable = client.QueryAsync <SfContact>("SELECT Id, Name FROM Contact ", batchSize: 200); // Get the enumerator, in a using block for proper disposal using (IAsyncEnumerator <SfContact> contactsEnumerator = contactsEnumerable.GetEnumerator()) { // MoveNext() will execute the query and get the first batch of results. // Once the inital result batch has been exhausted, the remaining batches, if any, will be retrieved. while (await contactsEnumerator.MoveNext()) { SfContact contact = contactsEnumerator.Current; // process your results } } } catch (ForceApiException ex) { Console.WriteLine("ForceApiException: " + ex.Message); return; } catch (Exception ex) { Console.WriteLine("General Exception: " + ex.Message); return; } return; }