FetchXMLBuilder
Die Klasse FetchXMLBuilder bietet eine flüssige API zum programmatischen Erstellen und Bearbeiten von FetchXML-Abfragen. Anstatt rohe XML-Strings zu erstellen, können Sie stark typisierte Methoden verwenden, um Entitäten, Spalten, Filter, Bedingungen, Sortierreihenfolgen und Link-Entitäten zu definieren.
React Note
FetchXMLBuilderist ein serverseitiges Blazor-Dienstprogramm – es gibt kein React-Äquivalent der Klasse. React verfügt stattdessen über den FetchXML-Abfrage-Builder, eine Komponente, die eine Abfrage visuell bearbeitet und dir das FetchXML übergibt; ein Aufrufer, der die Abfrage bereits kennt, setzt sie als String-Literal zusammen und übergibt sie anppp.retrieveRecordsAsync(fetchXml). Der Server übernimmt weiterhin die schwere Arbeit – Filterzusammenführung, Paging, Sicherheitstrimmen – sobald das FetchXML angekommen ist.
Erstellung einer Abfrage
Erstellen Sie eine neue FetchXMLBuilder mit einer leeren Abfrage oder parsen Sie eine bestehende FetchXML-Zeichenkette.
// Erstellen Sie eine leere Abfrage
var builder = new FetchXMLBuilder();
builder.Fetch.Entity.TableName = "contact";
// Oder parse eine bestehende FetchXML-Zeichenkette
var builder = new FetchXMLBuilder(existingFetchXml);
Auswahl von Spalten
Füge einzelne Spalten mit AddColumnhinzu oder setze AllColumns = true so, dass alle Spalten abgerufen werden. Die Einstellung AllColumns entfernt alle einzeln hinzugefügten Spalten.
// Fügen Sie spezifische Spalten hinzu
builder.Fetch.Entity.AddColumn("fullname");
builder.Fetch.Entity.AddColumn("emailaddress1");
// Oder alle Spalten abrufen
builder.Fetch.Entity.AllColumns = true;
Filter hinzufügen
Füge Filter zu einer Entität oder einer Verknüpfungs-Entität mit AddFilterhinzu, und füge dann Bedingungen zum Filter hinzu. Jede Bedingung spezifiziert eine Spalte, einen Operator und einen Wert.
var filter = builder.Fetch.Entity.AddFilter(LogicalOperator.And);
var condition = filter.AddCondition();
condition.Column = "statecode";
condition.Operator = ConditionOperator.Equal;
condition.Value = "0";
// Fügen Sie eine OR-Bedingungsgruppe hinzu
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%";
Zusammenführung verwandter Tabellen
Nutze es AddLinkEntity , um einer verwandten Tabelle beizutreten. Setze die TableNameEigenschaften , From, To, Operator und zur Definition des Joins. Filter können zu Link-Entitäten hinzugefügt werden, genau wie die Hauptentität.
var linkEntity = builder.Fetch.Entity.AddLinkEntity();
linkEntity.TableName = "account";
linkEntity.From = "accountid";
linkEntity.To = "parentcustomerid";
linkEntity.Operator = JoinOperator.LeftOuter;
linkEntity.Alias = "acct";
// Spalten aus der verknüpften Tabelle hinzufügen
linkEntity.AddColumn("name");
// Fügen Sie Filter zur verklinkten Tabelle hinzu
var linkFilter = linkEntity.AddFilter();
var linkCondition = linkFilter.AddCondition();
linkCondition.Column = "statecode";
linkCondition.Operator = ConditionOperator.Equal;
linkCondition.Value = "0";
Sortierergebnisse
Verwenden AddSortOrder Sie, um die Sortierreihenfolge zu definieren. Du kannst den Spaltennamen und die Sortierung in absteigender Reihenfolge angeben.
// Sortiere nach vollständigem Namen aufsteigend
builder.Fetch.Entity.AddSortOrder("fullname");
// Sortieren nach createdon absteigend
builder.Fetch.Entity.AddSortOrder("createdon", descending: true);
Paging
Kontrolle das Paging-Verfahren mit den Count, , und PagingCookie Eigenschaften auf dem Fetch PageElement. Stellen Sie ein, ReturnRecordCount = true dass die Gesamtanzahl der Datensätze in den Ergebnissen enthalten ist.
builder.Fetch.Count = 50;
builder.Fetch.Page = 1;
builder.Fetch.ReturnRecordCount = true;
// Für nachfolgende Seiten setzen Sie das Paging-Cookie aus dem vorherigen Ergebnis
builder.Fetch.Page = 2;
builder.Fetch.PagingCookie = previousPagingCookie;
Parsing bestehender FetchXML
Geben Sie eine bestehende FetchXML-Zeichenkette an den Konstruktor weiter, um sie zu parsen und zu bearbeiten. Dies ist nützlich, um Anfragen aus Ansichten oder anderen Quellen zu verändern.
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);
// Verändern Sie die geparste Abfrage
builder.Fetch.Entity.AddColumn("emailaddress1");
builder.Fetch.Entity.AddSortOrder("fullname");
Generierung des FetchXML-Strings
Aufruf ToString() zur Generierung der FetchXML-Zeichenkette. Die Ausgabe ist deterministisch geordnet: Attribute, dann Sortierreihenfolgen, dann Filter, schließlich Link-Entitäten. Innerhalb jeder Gruppe sind die Elemente alphabetisch sortiert.
var fetchXmlString = builder.ToString();
FetchXMLBuilder Baureihe
Eigenschaften
Name | Typ | Default | Beschreibung |
|---|---|---|---|
Fetch | FetchElement | Erhält das Root-Fetch-Element der Abfrage. |
Fetch