Mettre en page d’importants ensembles de résultats avec QueryExpression
Date de publication : novembre 2016
S’applique à : Dynamics CRM 2015
Dans Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015, vous pouvez utiliser la fonctionnalité de cookie de pagination pour accélérer la pagination dans une application pour les grands ensembles de données. La fonctionnalité est disponible dans les deux requêtes FetchXML et QueryExpression. Lorsque vous utilisez la fonctionnalité de cookie de pagination pour rechercher un ensemble d’enregistrements, le résultat contient une valeur pour le cookie de pagination. Pour améliorer les performances du système, vous pouvez ensuite passer cette valeur lorsque vous récupérez l’ensemble d’enregistrements suivant.
QueryExpression et FetchXML utilisent différents formats pour leurs cookies de pagination. Si vous convertissez un format de requête en un autre format à l'aide du message QueryExpressionToFetchXmlRequest ou du message FetchXmlToQueryExpressionRequest, la valeur du cookie de pagination est ignorée. En outre, si vous demandez des pages non consécutives, la valeur du cookie de pagination est ignorée.
Utilisation d’un cookie de pagination avec QueryExpression
L’exemple suivant montre comment utiliser le cookie de pagination avec une expression de requête. Pour obtenir l’exemple de code complet, voir Exemple : Utiliser QueryExpression avec un cookie de pagination.
// 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;
}
}
Voir aussi
Générer des requêtes avec QueryExpression
Exemple : Utiliser QueryExpression avec un cookie de pagination
Exemple : Extraire avec une relation un-à-plusieurs
Utiliser la classe QueryExpression
Mettre en page d’importants ensembles de résultats avec FetchXML
© 2017 Microsoft. Tous droits réservés. Copyright