FetchXMLBuilder
La FetchXMLBuilder classe fournit une API fluide pour construire et manipuler des requêtes FetchXML de manière programmatique. Au lieu de construire des chaînes XML brutes, vous pouvez utiliser des méthodes fortement typées pour définir des entités, colonnes, filtres, conditions, ordres de tri et entités de lien.
Note de réaction
FetchXMLBuilderest un utilitaire Blazor côté serveur — il n’existe pas d’équivalent React. Les appelants React composent FetchXML sous forme de littéraux de chaînes (chaînes de chaînes) et les transmettent directement àppp.retrieveRecordsAsync(fetchXml). Le serveur fait toujours le travail lourd (fusion de filtres, pagination, réduction de la sécurité) une fois que le FetchXML arrive.
Création d’une requête
Créez-en une nouvelle FetchXMLBuilder avec une requête vide, ou analysez une chaîne FetchXML existante.
// Créer une requête vide
var builder = new FetchXMLBuilder();
builder.Fetch.Entity.TableName = "contact";
// Ou analyser une chaîne FetchXML existante
var builder = new FetchXMLBuilder(existingFetchXml);
Sélection des colonnes
Ajoutez des colonnes individuelles avec AddColumn, ou définissez AllColumns = true pour récupérer toutes les colonnes. Le paramètre AllColumns supprime toutes les colonnes ajoutées individuellement.
// Ajouter des colonnes spécifiques
builder.Fetch.Entity.AddColumn("fullname");
builder.Fetch.Entity.AddColumn("emailaddress1");
// Ou récupérer toutes les colonnes
builder.Fetch.Entity.AllColumns = true;
Ajout de filtres
Ajoutez des filtres à une entité ou entité de lien avec AddFilter, puis ajoutez des conditions au filtre. Chaque condition spécifie une colonne, un opérateur et une valeur.
var filter = builder.Fetch.Entity.AddFilter(LogicalOperator.And);
var condition = filter.AddCondition();
condition.Column = "statecode";
condition.Operator = ConditionOperator.Equal;
condition.Value = "0";
// Ajouter un groupe de condition OR
var orFilter = builder.Fetch.Entity.AddFilter(LogicalOperator.Or);
var nameCondition = orFilter.AddCondition();
nameCondition.Column = "fullname";
nameCondition.Operator = ConditionOperator.Like;
nameCondition.Value = "%smith%";
var emailCondition = orFilter.AddCondition();
emailCondition.Column = "emailaddress1";
emailCondition.Operator = ConditionOperator.Like;
emailCondition.Value = "%smith%";
Assembler les tables connexes
Utilisez AddLinkEntity pour rejoindre une table connexe. Définissez les TableNamepropriétés , From, To, et Operator pour définir la jointure. Des filtres peuvent être ajoutés aux entités de liaison tout comme à l’entité principale.
var linkEntity = builder.Fetch.Entity.AddLinkEntity();
linkEntity.TableName = "account";
linkEntity.From = "accountid";
linkEntity.To = "parentcustomerid";
linkEntity.Operator = JoinOperator.LeftOuter;
linkEntity.Alias = "acct";
// Ajouter des colonnes à partir de la table liée
linkEntity.AddColumn("name");
// Ajoutez des filtres à la table liée
var linkFilter = linkEntity.AddFilter();
var linkCondition = linkFilter.AddCondition();
linkCondition.Column = "statecode";
linkCondition.Operator = ConditionOperator.Equal;
linkCondition.Value = "0";
Résultats du tri
Utilisez AddSortOrder pour définir l’ordre de tri. Vous pouvez spécifier le nom de la colonne et indiquer s’il faut trier par ordre décroissant.
// Trier par nom complet ascendant
builder.Fetch.Entity.AddSortOrder("fullname");
// Trier par createdon descendant
builder.Fetch.Entity.AddSortOrder("createdon", descending: true);
Pagination
Contrôlez la pagination avec le Count, , et PagingCookie les propriétés sur l’élément Fetch Page. Réglez ReturnRecordCount = true pour inclure le nombre total de records dans les résultats.
builder.Fetch.Count = 50;
builder.Fetch.Page = 1;
builder.Fetch.ReturnRecordCount = true;
// Pour les pages suivantes, configurez le cookie de pagination à partir du résultat précédent
builder.Fetch.Page = 2;
builder.Fetch.PagingCookie = previousPagingCookie;
Analyse du FetchXML existant
Passez une chaîne FetchXML existante au constructeur pour qu’elle l’analyse et la manipule. C’est utile pour modifier des requêtes issues de vues ou d’autres sources.
var fetchXml = @"<fetch>
<entity name='contact'>
<attribute name='fullname' />
<filter>
<condition attribute='statecode' operator='eq' value='0' />
</filter>
</entity>
</fetch>";
var builder = new FetchXMLBuilder(fetchXml);
// Modifier la requête analysée
builder.Fetch.Entity.AddColumn("emailaddress1");
builder.Fetch.Entity.AddSortOrder("fullname");
Génération de la chaîne FetchXML
Appel ToString() pour générer la chaîne FetchXML. La sortie est déterministe : attributs, puis ordres de tri, puis filtres, puis entités lien. Dans chaque groupe, les éléments sont triés par ordre alphabétique.
var fetchXmlString = builder.ToString();
FetchXMLBuilder Classe
Propriétés
Nom | Type | Par défaut | Description |
|---|---|---|---|
Fetch | FetchElement | Obtient l’élément de recherche racine de la requête. |
Fetch