IPowerPortalsProService
Die Benutzeroberfläche IPowerPortalsProService bietet Methoden zur Durchführung von CRUD-Operationen, zur Ausführung von Abfragen, zur Verwaltung von Beziehungen und zum Abruf von Metadaten aus Dataverse. Es ist der primäre Service für serverseitigen Datenzugriff in PowerPortalsPro.
Anmerkung
In den meisten Fällen müssen Sie nicht direkt anrufen
IPowerPortalsProService. Die ,MainContext, und GitterkomponentenRecordContextübernehmen die Datenoperationen automatisch. Nutzen Sie diesen Service für benutzerdefinierte Logik, die außerhalb des Standard-Komponenten-Workflows liegt.
Server- und Client-Implementierungen
IPowerPortalsProService Wird mit zwei Implementierungen ausgeliefert, die automatisch vom Framework registriert werden – Ihr Komponentencode ist gegenüber beiden identisch, und die Laufzeit injiziert jeweils diejenige, die zum aktiven Renderkontext passt:
- Serverimplementierung (
PowerPortalsPro.Web.Server, registriert vonAddPowerPortalsProWebServer) — läuft im Prozess, kommuniziert direkt mit Dataverse überIOrganizationService, und wendet IhreITablePermissionProviderRegistrierungen vor jedem Lesen oder Schreiben an. Ausgewählt, wenn die Seite unterInteractiveServerRenderModestatischem oder statischem SSR rendert. - Client-Implementierung (
PowerPortalsPro.Web.Client, registriert vonAddPowerPortalsProWebClient) — läuft im Browser unter WebAssembly, hat überhaupt kein Dataverse SDK und serialisiert stattdessen jeden Aufruf mit JSON an den entsprechenden serverseitigen HTTP-Endpunkt (/api/table/{name},/api/retrieveMultiple, usw.). Die Berechtigungshandler gelten weiterhin, weil die Anfrage wieder am Endpunkt des Servers landet. Siehe die Client-API-Seite für das Wire-Format und die von der Client-Implementierung aufgerufenen Routen.
Da der Vertrag identisch ist, arbeitet dieselbe Komponente in jedem Interaktivitätsmodus (Server, WebAssembly oder Auto). Code, der eine servergerenderte Seite aufruft _powerPortalsProService.RetrieveRecordAsync(...) , führt einen inprozessorientierten Dataverse-Aufruf aus; dieselbe Zeile auf einer WASM-gerenderten Seite stellt eine HTTP-Anfrage – kein Verzweiging erforderlich.
Injektion des Dienstes
Injizieren Sie IPowerPortalsProService in jede Blazor-Komponente oder -Dienstleistung über Constructor- oder Property-Injektion.
// usePowerPortalsPro() gibt den typisierten Client zurück, den das Framework dispatcht
// Jeder CRUD-Anruf durch. Das Objekt 'ppp' zeigt abrufen / erstellen /
// aktualisieren / löschen / zuordnen / ausführenMehrere / Metadaten / Dateimethoden
// gegen die konfigurierte Dataverse-Umgebung.
import { usePowerPortalsPro } from '@powerportalspro/react';
function MyComponent() {
const { ppp } = usePowerPortalsPro();
// ...
}[Inject]
private IPowerPortalsProService _powerPortalsProService { get; set; } = null!;Abruf eines Datensatzes
Verwenden RetrieveRecordAsync Sie, um einen einzelnen Datensatz anhand von Tabellennamen und ID abzurufen. Geben Sie optional an, welche Spalten zurückgegeben werden sollen; wenn ausgelassen, werden alle Spalten zurückgegeben.
// Alle Spalten abrufen
const account = await ppp.retrieveRecordAsync('account', accountId);
// Nur spezifische Spalten abrufen
const account = await ppp.retrieveRecordAsync('account', accountId, [
'name', 'telephone1', 'address1_city',
]);// Alle Spalten abrufen
var account = await _powerPortalsProService.RetrieveRecordAsync("account", accountId);
// Nur spezifische Spalten abrufen
var account = await _powerPortalsProService.RetrieveRecordAsync("account", accountId,
new[] { "name", "telephone1", "address1_city" });Abfrage mehrerer Datensätze
Verwenden RetrieveRecordsAsync Sie mit einer FetchXML-Abfragezeichenkette, um mehrere Datensätze mit Unterstützung für Filterung, Sortierung und verknüpfte Entitäten abzurufen.
const fetchXml = `<fetch>
<entity name='contact'>
<attribute name='fullname' />
<attribute name='emailaddress1' />
<filter>
<condition attribute='parentcustomerid' operator='eq' value='...' />
</filter>
<order attribute='fullname' />
</entity>
</fetch>`;
const response = await ppp.retrieveRecordsAsync(fetchXml);
for (const record of response.tableRecords) {
// Bearbeiten Sie jeden Datensatz
}var fetchXml = @"<fetch>
<entity name='contact'>
<attribute name='fullname' />
<attribute name='emailaddress1' />
<filter>
<condition attribute='parentcustomerid' operator='eq' value='...' />
</filter>
<order attribute='fullname' />
</entity>
</fetch>";
var response = await _powerPortalsProService.RetrieveRecordsAsync(fetchXml);
foreach (var record in response.TableRecords)
{
// Bearbeiten Sie jeden Datensatz
}Erstellung eines Datensatzes
Verwenden CreateRecordAsync Sie, um einen neuen Datensatz in Dataverse zu erstellen. Die Antwort enthält die ID des neu erstellten Datensatzes.
// TableRecord verwendet eine 'Properties'-Abbildung der typisierten ColumnValue-Objekte, die mit Keyd versehen sind
// nach Spaltennamen. Der createTableRecord-Helfer baut die Drahtform und
// stempelt einen temporären '_idForCreate', damit Querverweise aufgelöst werden können
// innerhalb eines einzelnen Create + Associate-Batches, bevor der Server das
// Real ID.
import { createTableRecord } from '@powerportalspro/react';
const newContact = createTableRecord('contact', {
firstname: { type: 'string', value: 'John' },
lastname: { type: 'string', value: 'Doe' },
});
const response = await ppp.createRecordAsync(newContact);
const newRecordId = response.id;var newContact = new TableRecord { TableName = "contact" };
newContact["firstname"] = new StringValue("John");
newContact["lastname"] = new StringValue("Doe");
var response = await _powerPortalsProService.CreateRecordAsync(newContact);
var newRecordId = response.Id;Aktualisierung eines Datensatzes
Verwenden Sie UpdateRecordAsync es, um einen bestehenden Datensatz zu aktualisieren. Nur die auf der Domain gesetzten TableRecord Eigenschaften werden an Dataverse gesendet.
const recordToUpdate = createTableRecord('contact', {
telephone1: { type: 'string', value: '555-1234' },
}, { id: contactId });
await ppp.updateRecordAsync(recordToUpdate);var recordToUpdate = new TableRecord
{
TableName = "contact",
Id = contactId
};
recordToUpdate["telephone1"] = new StringValue("555-1234");
await _powerPortalsProService.UpdateRecordAsync(recordToUpdate);Löschen eines Datensatzes
Nutze es, DeleteRecordAsync um einen Datensatz nach Tabellennamen und ID zu löschen.
await ppp.deleteRecordAsync('contact', contactId);await _powerPortalsProService.DeleteRecordAsync("contact", contactId);Assoziierende Aufzeichnungen
Verwenden AssociateAsync Sie und DisassociateAsync verwalten Sie viele-zu-viele Beziehungen zwischen Datensätzen.
// Associate
const account = { tableName: 'account', id: accountId };
const regions = [
{ tableName: 'ppp_region', id: regionId1 },
{ tableName: 'ppp_region', id: regionId2 },
];
await ppp.associateAsync(account, 'ppp_Account_ppp_Region_ppp_Region', regions);
// Dissoziieren
await ppp.disassociateAsync(account, 'ppp_Account_ppp_Region_ppp_Region', regions);// Associate
var account = new TableRecordReference("account", accountId);
var regions = new List<TableRecordReference>
{
new TableRecordReference("ppp_region", regionId1),
new TableRecordReference("ppp_region", regionId2),
};
await _powerPortalsProService.AssociateAsync(account, "ppp_Account_ppp_Region_ppp_Region", regions);
// Dissoziieren
await _powerPortalsProService.DisassociateAsync(account, "ppp_Account_ppp_Region_ppp_Region", regions);Ausführung von Anfragen
Verwenden ExecuteAsync Sie für eine einzelne Anfrage oder ExecuteMultipleAsync um mehrere Anfragen in einer einzigen Datenbanktransaktion auszuführen. Wenn eine Anfrage in einem transaktionalen Batch fehlschlägt, werden alle Änderungen zurückgesetzt.
// Führe mehrere Anfragen in einer einzigen Transaktion aus. Jede Anfrage ist ein getaggtes Union-Objekt, das nach 'type' diskriminiert wird.
const requests = [
{ type: 'create', record: contact },
{ type: 'update', record: account },
];
const responses = await ppp.executeMultipleAsync(requests, { returnResponses: true });// Führe mehrere Anfragen in einer einzigen Transaktion aus
var requests = new List<OrganizationRequest>
{
new CreateRequest(contact),
new UpdateRequest(account),
};
var responses = await _powerPortalsProService.ExecuteMultipleAsync(requests, returnResponses: true);Abruf von Metadaten
Verwenden RetrieveTableMetadataAsync Sie und RetrieveViewMetadataAsync um Tabellen- und Ansichtsmetadaten abzurufen. Für zwischengespeicherte Zugriffe bevorzugen ITableMetadataCache Sie stattdessen und IViewMetadataCache .
const tableMetadata = await ppp.retrieveTableMetadataAsync('contact');
const viewMetadata = await ppp.retrieveViewMetadataAsync(viewId);var tableMetadata = await _powerPortalsProService.RetrieveTableMetadataAsync("contact");
var viewMetadata = await _powerPortalsProService.RetrieveViewMetadataAsync(viewId);Arbeit mit Dateien
Verwenden GetFileInfoAsync Sie es, um Datei- oder Bildmetadaten und optional den Binärinhalt aus einer Datei- oder Bildspalte abzurufen.
// Nur Dateimetadaten abrufen
const fileInfo = await ppp.getFileInfoAsync('contact', contactId, 'ppp_contract');
// Erhalten Sie Dateimetadaten und binäre Inhalte
const fileWithData = await ppp.getFileInfoAsync(
'contact', contactId, 'ppp_contract', { includeData: true },
);
const bytes = fileWithData.fileData;// Nur Dateimetadaten abrufen
var fileInfo = await _powerPortalsProService.GetFileInfoAsync("contact", contactId, "ppp_contract");
// Erhalten Sie Dateimetadaten und binäre Inhalte
var fileWithData = await _powerPortalsProService.GetFileInfoAsync("contact", contactId, "ppp_contract", includeData: true);
var bytes = fileWithData.FileData;Direkter Dataverse-Zugriff
IPowerPortalsProService deckt das ab, was ein Portal normalerweise benötigt, aber einige serverseitige Arbeiten benötigen das Dataverse-SDK selbst – eine LINQ-Abfrage mit Joins oder Aggregates, ExecuteMultipleeiner benutzerdefinierten Aktion oder jeder Nachricht, die der Dienst nicht umwickelt. Injizieren IOrganizationServiceProvider , um ein ServiceClient SDK zu erhalten und direkt zu verwenden.
Es bietet zwei Kunden, und der Unterschied ist entscheidend:
GetOrganizationService()– diejenige, zu der man standardmäßig greifen muss. EsCallerIdist der angemeldete Nutzer, daher setzt Dataverse die eigenen Rechte dieses Nutzers und die Audit-Trail-Aufzeichnungen durch, wer was getan hat.GetOrganizationServiceAsApp()(eine Erweiterung inPowerPortalsPro.Xrm.Extensions) — löschtCallerId, sodass Aufrufe ausgeführt werden, wie der Anwendungsbenutzer in konfiguriert istConnectionOptions. Benötigt, wenn die Operation etwas liest, für das der angemeldete Benutzer keine Rechte hat, wie z. B. ein kontaktgebundener Benutzer, der einensystemuserDatensatz lesen muss.
@using PowerPortalsPro.Dataverse.Linq
@using PowerPortalsPro.Xrm.Extensions
@using PowerPortalsPro.Xrm.Services
@inject IOrganizationServiceProvider _organizationServiceProvider
@code {
private async Task LoadAsync()
{
// Runs as the signed-in user — Dataverse enforces their privileges.
using var service = _organizationServiceProvider.GetOrganizationService();
var contacts = await service.Queryable("contact")
.Where(c => c.GetAttributeValue<string>("lastname") == "Smith")
.ToListAsync();
}
}
Der zurückgegebene ServiceClient ist ein Klon und einweggefähr – wickle ihn wie oben ein using , anstatt ihn für die Lebensdauer eines Bauteils zu behalten.
Pass auf
Keiner der Clients führt den
ITablePermissionProviderCode deines Portals aus – das gilt für Aufrufe, die durchgehenIPowerPortalsProServiceGetOrganizationServiceAsApp(). insbesondere umgeht auch die Sicherheit von Dataverse selbst, sodass eine dort geschriebene Abfrage alles in der Umgebung zurückgeben kann. Wenn du sie auf einem Pfad verwendest, den ein Besucher erreichen kann, filtere die Daten direkt in der Abfrage und nicht im Nachhinein.
Anmerkung
Dies ist nur serverseitig – es benötigt die Dataverse-Verbindung, daher ist sie im Serverprojekt (und in Blazor Server-Komponenten) verfügbar, aber nicht in einem WebAssembly-Client oder dem React SPA. Diese erreichen Dataverse stattdessen über die API des Portals.
IPowerPortalsProService Interface
Methoden
Name | Parameter | Typ | Beschreibung |
|---|---|---|---|
AssociateAsync | TableRecordReference record string relationshipName IEnumerable<TableRecordReference> relatedRecords EntityRole? role CancellationToken cancellationToken | Task<AssociateResponse> | Verknüpft einen Eintrag mit einem oder mehreren verwandten Unterlagen durch eine viele-zu-viele-Beziehung. |
ClearAllCachesAsync | CancellationToken cancellationToken | Task<IReadOnlyList<CacheClearResult>> | Löscht jede serverseitige Services.IClearableCache Karte (Tabelle / Ansicht / Privileg) Metadaten, Benutzerrechte, Umgebungsdatei-Einstellungen) und stellt die Lokalisierte Zeichenketten cachen atomar – die Leser sehen weiterhin das zuvor Daten geladen, bis der neue Zustand vollständig besetzt ist. Lazy Caches füllen sich auf dem Nächste Anfrage, die sie braucht. |
ClearCacheAsync | string name CancellationToken cancellationToken | Task<CacheClearResult> | Löscht einen benannten Cache. Kehrt zurück, null wenn kein registrierter Cache registriert ist Cache-Übereinstimmungen name (Groß- und Kleinschreibungsunempfindlich); Fehler sind Eingewickelt im Ergebnis statt geworfen. Dasselbe Auth-Gate wie Threading.CancellationToken). |
CreateFileArchiveAsync | CreateFileArchiveRequest request CancellationToken cancellationToken | Task<FileArchiveResult> | Erstellt ein Archiv (derzeit zip; zukünftige Formate leben hinter dem CreateFileArchiveRequest.Format enum) mit allen Aufzeichnungen Dateinutzlast für das benannte Tabellen-/Spaltenpaar. Verwendet denselben pro Datensatz Permission-Chain als Threading.CancellationToken) — unbefugt / fehlend Zeilen werden stillschweigend aus dem Archiv entfernt. Doppelte Dateinamen sind eindeutig durch das Suffix |
CreateRecordAsync | TableRecord record CancellationToken cancellationToken | Task<CreateResponse> | Erstellt einen neuen Datensatz in Dataverse. |
DeleteRecordAsync | string tableLogicalName Guid id CancellationToken cancellationToken | Task<DeleteResponse> | Löscht einen Datensatz aus Dataverse nach Tabellennamen und Datensatz-ID. |
DisassociateAsync | TableRecordReference record string relationshipName IEnumerable<TableRecordReference> relatedRecords EntityRole? role CancellationToken cancellationToken | Task<DisassociateResponse> | Entfernt eine Verbindung zwischen einem Datensatz und einem oder mehreren verwandten Datensätzen über eine viele-zu-viele-Beziehung. |
DownloadLocalizationSourceAsync | string sourceId string culture CancellationToken cancellationToken | Task<LocalizationDownload> | Lädt die Schlüssel herunter, eine Quelle hat zu einer Kultur beigetragen, während der meisten kürzlich aufgewärmt, als JSON im gleichen Konsumenten mit verschachtelten Objekten |
DownloadMergedLocalizationsAsync | string culture CancellationToken cancellationToken | Task<LocalizationDownload> | Lädt die zusammengeführten Lokalisierungsschlüssel für eine Kultur herunter – die Post-Merge Gewinnwert für jeden Schlüssel, den der Cache gespeichert hat, unabhängig davon, welchen Die Quelle lieferte es ursprünglich. Nutzen Sie dies für eine vollständige Momentaufnahme Referenz (alles, was das Portal tatsächlich für diese Kultur dienen wird) und nicht die oben beschriebene Ansicht pro Quelle. |
ExecuteAsync | OrganizationRequest request CancellationToken cancellationToken | Task<OrganizationResponse> | Führt eine einzelne Organisationsanfrage gegen Dataverse aus. |
ExecuteMultipleAsync | IEnumerable<OrganizationRequest> requests bool returnResponses CancellationToken cancellationToken | Task<List<OrganizationResponse>> | Führt mehrere Organisationsanfragen in einer einzigen Datenbanktransaktion aus. Wenn eine Anfrage fehlschlägt, werden alle Änderungen im Batch zurückgesetzt. |
GetCacheNamesAsync | CancellationToken cancellationToken | Task<IReadOnlyList<string>> | Gibt die Namen aller serverseitigen Services.IClearableCache, passend zurück. für eine Admin-Benutzeroberfläche, die pro Cache Lösch-Buttons rendern will. Dasselbe Auth-Gate wie Threading.CancellationToken) auf dem HTTP-Endpunkt gilt. |
GetFileInfoAsync | string tableName Guid recordId string columnName bool includeData CancellationToken cancellationToken | Task<FileInfo> | Ruft Dateiinformationen und optional den Binärinhalt aus einer Datei- oder Bildspalte in Dataverse ab. |
GetFileInfosAsync | string tableName IEnumerable<Guid> recordIds string columnName bool includeData CancellationToken cancellationToken | Task<IEnumerable<FileInfo>> | Batch-Abruf von Dateiinformationen für viele Datensätze derselben Tabelle / Spalte in einer einzigen Hin- und Rückfahrt. Intern fächert man die pro Platte parallel ab und gibt die kombinierte Liste zurück. Die gleiche pro-record-Permission-Handler-Kette läuft wie für der Ein-Record-Anruf; Fehlgeschlagene Nachschlage werden aus der Antwort gestrichen, anstatt Ich bin bei der ganzen Charge durchgefallen. Verwendet von FileGrids 'Download All' / 'Download Selected', damit der Client eine zip, ohne N HTTP-Anfragen abzufeuern. |
GetLocalizationOverviewAsync | CancellationToken cancellationToken | Task<LocalizationOverview> | Gibt einen administrativ orientierten Schnappschuss der String-Lokalisierungspipeline zurück: die Statische Konfiguration, die das Aufwärmen sowie die Ladeaufzeichnungen pro Quelle steuerte produziert vom jüngsten Aufwärmen. Unterstützt die |
GetMergedLocalizationEntriesAsync | string culture CancellationToken cancellationToken | Task<IReadOnlyList<MergedLocalizationEntry>> | Gibt die zusammengeführten Lokalisierungsschlüssel für eine Kultur als strukturierte Liste zurück – jede Schlüssel, den der Cache bedient, seinen Gewinnwert nach dem Merge und welche Quelle geliefert wird Dieser Wert. Gleiche Daten wie, Threading.CancellationToken) aber pro Schlüssel annotiert mit seinem Ursprung (Datei / Webressource / Dataverse-Metadaten), damit ein Administrator dies tun kann Herkunft in einem Raster inspizieren. Einträge sind nach Schlüssel sortiert. |
GetOrganizationSettingsAsync | CancellationToken cancellationToken | Task<OrganizationSettings> | Ruft die organisationsweiten Einstellungen ab, die aus dem Dataverse stammen
|
GetTablePermissionsForCurrentUserAsync | string tableLogicalName CancellationToken cancellationToken | Task<TableSecurityPermission> | Gibt die kombinierte Tabellen-Maske Models.TableSecurityPermission des aktuellen Benutzers zurück für tableLogicalName — die bitweise Vereinigung von Lesen / Erstellen / Schreiben / Löschen / Anhängen / Anhängen markiert jede registrierte |
GetTablePermissionWebRolesAsync | Guid tablePermissionId CancellationToken cancellationToken | Task<IReadOnlyList<Guid>> | Gibt die IDs der Power Pages-Webrollen zurück, für die eine Tabellenberechtigung gilt, unter erweitertem Genehmigung. |
GetTranslationAvailabilityAsync | CancellationToken cancellationToken | Task<TranslationAvailability> | Gibt zurück, ob die Lokalisierungs-Übersetzungsfunktion in der aktuellen Umgebung nutzbar ist: ob der Azure-Übersetzungsdienst konfiguriert ist, ob die Übersetzung verwaltet wurde Die Lösung ist installiert, und die potenziellen Zielsprachen (die vom Portal unterstützten Kulturen annotiert mit Azure-translateability). Unterstützt die Entscheidung der |
GetUserTablePermissionsAsync | string tableLogicalName CancellationToken cancellationToken | Task<UserTablePermissions> | Die Operationen des aktuellen Benutzers in einer Tabelle, zusammen mit den Spaltenberechtigungen eines Datensatzes Sie erstellen Starts mit – welche Spalten sie beim Erstellen setzen dürfen, im Gegensatz zu den Ones Ein bestehender TableRecord.ColumnPermissions Datensatz sagt, dass sie sich ändern können. Was ein Formular im Erstellungsmodus braucht, um die Spalten darzustellen, die der Benutzer möglicherweise nicht als schreibgeschützt einstellt. |
RetrieveRecordAsync | string tableLogicalName Guid id IEnumerable<string> columns CancellationToken cancellationToken | Task<TableRecord> | Ruft einen einzelnen Datensatz aus Dataverse anhand von Tabellennamen und Datensatz-ID ab. |
RetrieveRecordsAsync | string fetchXml CancellationToken cancellationToken | Task<RetrieveRecordsResponse> | Ruft mehrere Datensätze aus Dataverse mithilfe einer FetchXML-Abfrage ab. Unterstützt Filterung, Sortierung, Auslagerung, verknüpfte Entitäten und aggregierte Abfragen. |
RetrieveTableHeadersAsync | CancellationToken cancellationToken | Task<IReadOnlyList<TableHeader>> | Ruft die Identitätsebene-Metadaten ab – logisch, Schema und Anzeigename plus Ein paar Flaggen – für jeden Tisch in der Umgebung. Threading.CancellationToken), für die Ein Fall, in dem ein Aufrufer Tabellen auflisten muss, anstatt eine zu inspizieren. A Der Abfragedesigner, der einen 'From'-Picker ausfüllt, müsste sonst abrufen vollständige Metadaten für jede Tabelle in der Umgebung, was Dutzende von Sekunden; dies ist eine einzelne Rundreise, die aus einem In-Process-Cache ausgeliefert wird, danach Der erste Anruf. Threading.CancellationToken), die jede authentifizierte Karte bedient Ruf die Form eines beliebigen Tisches an. Anrufer, die eine engere Liste brauchen, sollten das tun Filtern TableHeader.IsValidForAdvancedFind oder wenden sie an Eigene Regeln. |
RetrieveTableMetadataAsync | string tableLogicalName CancellationToken cancellationToken | Task<TableMetadata> | Enthält Tabellenmetadaten aus Dataverse, einschließlich Spaltendefinitionen, Beziehungen und Anzeigekonfiguration. |
RetrieveTableMetadataBatchAsync | IReadOnlyList<TableMetadataRequest> requests CancellationToken cancellationToken | Task<IReadOnlyList<TableMetadata>> | Gibt mehrere Metadaten mehrerer Tabellen in einem Aufruf zurück, jeweils auf die Spalten und Beziehungen seine Anfragenamen. Threading.CancellationToken) bedeutet eine Hin- und Rückfahrt pro zugehöriger Tabelle, jeder einen ganzen Tisch zurückbringen, um ein Etikett zu lesen. |
RetrieveViewMetadataAsync | Guid viewId CancellationToken cancellationToken | Task<ViewMetadata> | Ruft Ansichtsmetadaten aus Dataverse ab, einschließlich der FetchXML-Abfrage, Spalten und Anzeigekonfiguration der Ansicht. |
RetrieveViewsForTableAsync | string tableLogicalName CancellationToken cancellationToken | Task<IEnumerable<ViewMetadata>> | Ruft jeden View-Metadaten-Datensatz für eine Tabelle ab. Verwendet von Grids, die es brauchen Listen Sie die verfügbaren Ansichten auf (View-Picker, Standard-Ansichtsauflösung usw.). Die serverseitige Implementierung liest aus dem sich befindlichen |
SetTablePermissionWebRolesAsync | Guid tablePermissionId IReadOnlyCollection<Guid> webRoleIds CancellationToken cancellationToken | Task<bool> | Ersetzt die Power Pages-Webrollen, für die eine Tabellenberechtigung gilt, unter erweiterter Autorisierung. |
TranslateLocalizationFileAsync | TranslationRequest request CancellationToken cancellationToken | Task<TranslationResult> | Maschinell übersetzt eine hochgeladene Lokalisierungsdatei über Azure in eine oder mehrere Zielsprachen Übersetzer, Wiederverwendung des Dataverse-Übersetzungsspeichers und Meldung der Anzahl der Strings Frisch übersetzt versus wiederverwendet. Gibt pro Zielsprache eine Datei plus eine ZIP von allen zurück. |
UpdateRecordAsync | TableRecord record CancellationToken cancellationToken | Task<UpdateResponse> | Aktualisiert einen bestehenden Datensatz in Dataverse. Nur die im Datensatz gesetzten Eigenschaften werden an Dataverse gesendet. |
AssociateAsyncstring relationshipName
IEnumerable<TableRecordReference> relatedRecords
EntityRole? role
CancellationToken cancellationToken
ClearAllCachesAsyncServices.IClearableCache Karte (Tabelle / Ansicht / Privileg) Metadaten, Benutzerrechte, Umgebungsdatei-Einstellungen) und stellt die Lokalisierte Zeichenketten cachen atomar – die Leser sehen weiterhin das zuvor Daten geladen, bis der neue Zustand vollständig besetzt ist. Lazy Caches füllen sich auf dem Nächste Anfrage, die sie braucht. ClearCacheAsyncCancellationToken cancellationToken
null wenn kein registrierter Cache registriert ist Cache-Übereinstimmungen name (Groß- und Kleinschreibungsunempfindlich); Fehler sind Eingewickelt im Ergebnis statt geworfen. Dasselbe Auth-Gate wie Threading.CancellationToken).CreateFileArchiveAsyncCancellationToken cancellationToken
CreateFileArchiveRequest.Format enum) mit allen Aufzeichnungen Dateinutzlast für das benannte Tabellen-/Spaltenpaar. Verwendet denselben pro Datensatz Permission-Chain als Threading.CancellationToken) — unbefugt / fehlend Zeilen werden stillschweigend aus dem Archiv entfernt. Doppelte Dateinamen sind eindeutig durch das Suffix CreateRecordAsyncCancellationToken cancellationToken
DeleteRecordAsyncGuid id
CancellationToken cancellationToken
DisassociateAsyncstring relationshipName
IEnumerable<TableRecordReference> relatedRecords
EntityRole? role
CancellationToken cancellationToken
DownloadLocalizationSourceAsyncstring culture
CancellationToken cancellationToken
DownloadMergedLocalizationsAsyncCancellationToken cancellationToken
ExecuteAsyncCancellationToken cancellationToken
ExecuteMultipleAsyncbool returnResponses
CancellationToken cancellationToken
GetCacheNamesAsyncServices.IClearableCache, passend zurück. für eine Admin-Benutzeroberfläche, die pro Cache Lösch-Buttons rendern will. Dasselbe Auth-Gate wie Threading.CancellationToken) auf dem HTTP-Endpunkt gilt.GetFileInfoAsyncGuid recordId
string columnName
bool includeData
CancellationToken cancellationToken
GetFileInfosAsyncIEnumerable<Guid> recordIds
string columnName
bool includeData
CancellationToken cancellationToken
GetLocalizationOverviewAsyncGetMergedLocalizationEntriesAsyncCancellationToken cancellationToken
Threading.CancellationToken) aber pro Schlüssel annotiert mit seinem Ursprung (Datei / Webressource / Dataverse-Metadaten), damit ein Administrator dies tun kann Herkunft in einem Raster inspizieren. Einträge sind nach Schlüssel sortiert.GetOrganizationSettingsAsync-
DefaultCurrency – die Basiswährung der Organisation, verwendet im Create-Mode Editoren (MoneyEdit ), um das richtige Symbol auf brandneuen Datensätzen darzustellen. -
BlockedFileExtensions +MaxUploadFileSizeInBytes — Datei-Upload Constraints, die Clients spiegeln, um ungültige Dateien vor dem Roundtrip abzulehnen.
GetTablePermissionsForCurrentUserAsyncCancellationToken cancellationToken
Models.TableSecurityPermission des aktuellen Benutzers zurück für tableLogicalName — die bitweise Vereinigung von Lesen / Erstellen / Schreiben / Löschen / Anhängen / Anhängen markiert jede registrierte GetTablePermissionWebRolesAsyncCancellationToken cancellationToken
GetTranslationAvailabilityAsyncGetUserTablePermissionsAsyncCancellationToken cancellationToken
TableRecord.ColumnPermissions Datensatz sagt, dass sie sich ändern können. Was ein Formular im Erstellungsmodus braucht, um die Spalten darzustellen, die der Benutzer möglicherweise nicht als schreibgeschützt einstellt.RetrieveRecordAsyncGuid id
IEnumerable<string> columns
CancellationToken cancellationToken
RetrieveRecordsAsyncCancellationToken cancellationToken
RetrieveTableHeadersAsyncThreading.CancellationToken), für die Ein Fall, in dem ein Aufrufer Tabellen auflisten muss, anstatt eine zu inspizieren. A Der Abfragedesigner, der einen 'From'-Picker ausfüllt, müsste sonst abrufen vollständige Metadaten für jede Tabelle in der Umgebung, was Dutzende von Sekunden; dies ist eine einzelne Rundreise, die aus einem In-Process-Cache ausgeliefert wird, danach Der erste Anruf. Threading.CancellationToken), die jede authentifizierte Karte bedient Ruf die Form eines beliebigen Tisches an. Anrufer, die eine engere Liste brauchen, sollten das tun Filtern TableHeader.IsValidForAdvancedFind oder wenden sie an Eigene Regeln. RetrieveTableMetadataAsyncCancellationToken cancellationToken
RetrieveTableMetadataBatchAsyncCancellationToken cancellationToken
Threading.CancellationToken) bedeutet eine Hin- und Rückfahrt pro zugehöriger Tabelle, jeder einen ganzen Tisch zurückbringen, um ein Etikett zu lesen. RetrieveViewMetadataAsyncCancellationToken cancellationToken
RetrieveViewsForTableAsyncCancellationToken cancellationToken
SetTablePermissionWebRolesAsyncIReadOnlyCollection<Guid> webRoleIds
CancellationToken cancellationToken
TranslateLocalizationFileAsyncCancellationToken cancellationToken
UpdateRecordAsyncCancellationToken cancellationToken
