Set di risultati di grandi dimensioni della pagina con QueryExpression

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

In Microsoft Dynamics 365 (online e locale), è possibile utilizzare la funzionalità dei cookie di paging in un'applicazione più rapida per set di dati di grandi dimensioni. La funzionalità è disponibile nelle query FetchXML e QueryExpression. Quando si utilizza la funzionalità di paging di cookie quando si esegue la query di un set di record, il risultato contiene un valore per il cookie di paging. Per migliorare le prestazioni del sistema, è possibile quindi passare tale valore quando si recupera il set successivo di record.

QueryExpression e FetchXML utilizzano formati diversi per i rispettivi cookie di paging. Se si converte un formato della query in un altro utilizzando il messaggio QueryExpressionToFetchXmlRequest o il messaggio FetchXmlToQueryExpressionRequest, il valore di un cookie di paging viene ignorato. Inoltre, se si richiedono le pagine non consecutive, il valore di cookie di paging viene ignorato.

Nell'esempio seguente viene illustrato come utilizzare il cookie di paging con un'espressione di query. Per il codice di esempio completo, vedere Esempio: utilizzare QueryExpressione con un cookie di paging.


// Query using the paging cookie.
// Define the paging attributes.
// The number of records per page to retrieve.
int queryCount = 3;

// Initialize the page number.
int pageNumber = 1;

// Initialize the number of records.
int recordCount = 0;

// Define the condition expression for retrieving records.
ConditionExpression pagecondition = new ConditionExpression();
pagecondition.AttributeName = "parentaccountid";
pagecondition.Operator = ConditionOperator.Equal;
pagecondition.Values.Add(_parentAccountId);

// Define the order expression to retrieve the records.
OrderExpression order = new OrderExpression();
order.AttributeName = "name";
order.OrderType = OrderType.Ascending;

// Create the query expression and add condition.
QueryExpression pagequery = new QueryExpression();
pagequery.EntityName = "account";
pagequery.Criteria.AddCondition(pagecondition);
pagequery.Orders.Add(order);
pagequery.ColumnSet.AddColumns("name", "emailaddress1");                   

// Assign the pageinfo properties to the query expression.
pagequery.PageInfo = new PagingInfo();
pagequery.PageInfo.Count = queryCount;
pagequery.PageInfo.PageNumber = pageNumber;

// The current paging cookie. When retrieving the first page, 
// pagingCookie should be null.
pagequery.PageInfo.PagingCookie = null;
Console.WriteLine("Retrieving sample account records in pages...\n");
Console.WriteLine("#\tAccount Name\t\tEmail Address"); 

while (true)
{
    // Retrieve the page.
    EntityCollection results = _serviceProxy.RetrieveMultiple(pagequery);
    if (results.Entities != null)
    {
        // Retrieve all records from the result set.
        foreach (Account acct in results.Entities)
        {
            Console.WriteLine("{0}.\t{1}\t{2}", ++recordCount, acct.Name,
                               acct.EMailAddress1);
        }
    }

    // Check for more records, if it returns true.
    if (results.MoreRecords)
    {
        Console.WriteLine("\n****************\nPage number {0}\n****************", pagequery.PageInfo.PageNumber);
        Console.WriteLine("#\tAccount Name\t\tEmail Address");

        // Increment the page number to retrieve the next page.
        pagequery.PageInfo.PageNumber++;

        // Set the paging cookie to the paging cookie returned from current results.
        pagequery.PageInfo.PagingCookie = results.PagingCookie;
    }
    else
    {
        // If no more records are in the result nodes, exit the loop.
        break;
    }
}

Vedere anche

Compilare query con QueryExpression
Esempio: utilizzare QueryExpressione con un cookie di paging
Esempio: Recuperare con una relazione uno-a-molti
Utilizzare la classe QueryExpression
Set di risultati di grandi dimensioni della pagina con FetchXML

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright