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-Utility – es gibt kein React-Äquivalent. React-Aufrufer komponieren FetchXML als String-Literale (Vorlagenstrings) und übergeben sie direkt anppp.retrieveRecordsAsync(fetchXml). Der Server übernimmt weiterhin die schwere Arbeit (Filterzusammenführung, Paging, Sicherheitstrimming), sobald das FetchXML ankommt.
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