Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Handbuch hilft Entwicklern, die Power Apps-Clientbibliothek für Code-Apps zu verwenden, um ihre Code-App mit Microsoft Dataverse zu verbinden.
Voraussetzungen
- Power Apps Clientbibliothek für Code-Apps
- Power Apps CLI (PAC CLI) Version 1.46 oder höher
- Eine Umgebung mit aktivierter Dataverse-Funktion
- Sie müssen mit der PAC CLI mit der Umgebung verbunden sein.
Steps
Stellen Sie sicher, dass Sie mithilfe der PAC CLI mit Ihrer Umgebung verbunden sind.
Verwenden Sie den Pac-Code-Add-Data-Source-Befehl, um Ihrer Code-App Dataverse als Datenquelle hinzuzufügen.
pac code add-data-source -a dataverse -t <table-logical-name>Ersetzen Sie
<table-logical-name>durch den logischen Namen der Dataverse-Tabelle, mit der Sie eine Verbindung herstellen möchten.
Unterstützte Szenarien
Die Power Apps-Clientbibliothek für Code-Apps unterstützt die folgenden Szenarien, wenn Sie eine Verbindung mit Dataverse herstellen:
Fügen Sie Dataverse-Entitäten zu Code-Apps hinzu.
Abrufen von formatierten Werten (Beschriftungen) für Optionsfelder und deren Werte.
Arbeiten mit Nachschlagefunktionen. Derzeit müssen Sie die Anleitung verwenden, um eine einzelwertige Navigationseigenschaft zuzuordnen oder Datensätze bei deren Erstellung zuzuordnen, wenn Sie mit Nachschlagevorgängen arbeiten. Ein dedizierter Anleitungsleitfaden wird in Kürze verfügbar sein. Das Power Apps Team arbeitet aktiv daran, Nachschlagevorgänge in Code-Apps zu vereinfachen.
Hochladen und Herunterladen von Bildern und Dateien (Vorschau). Wenn Sie Dataverse als Datenquelle mithilfe der npm-basierten Cli hinzufügen, sind die generierten Funktionen Teil von
src/generated/services.CRUD-Vorgänge durchführen:
- Create
- Gerätehandle
- RetrieveMultiple
- Update
- Löschen
Delegierung für:
FilterSort-
Top-Abfragen
Seitierungsunterstützung.
Tipp
Suchen Sie nach einem vollständigen Arbeitsbeispiel? Die Dataverse-Demo-App veranschaulicht alle in diesem Artikel behandelten Muster – CRUD-Vorgänge, Nachschlagefelder, Bild- und Dateiupload und -download sowie generierte Dienste – in einer React/TypeScript-App, die Sie erkunden und erweitern können. Um die App selbst auszuführen, befolgen Sie die Setupanweisungen in PowerAppsCodeApps/samples/Dataverse/DEVELOPMENT.md , um sie für Ihre Umgebung zu konfigurieren.
Richten Sie Ihre Code-App ein
Importieren Sie vor dem Erstellen, Lesen, Aktualisieren und Löschen (CRUD)-Vorgängen in Ihrer Code-App die erforderlichen Typen und Dienste.
Wenn Sie eine Datenquelle hinzufügen, generiert das System automatisch Modell- und Dienstdateien und platziert sie in dem /generated/services/ Ordner.
Wenn Sie beispielsweise die integrierte Tabelle "Konten " als Datenquelle hinzufügen, werden die folgenden Dateien erstellt:
-
AccountsModel.ts– Definiert das Datenmodell für die Tabelle "Konten". -
AccountsService.ts– Stellt Dienstmethoden für die Interaktion mit den Kontendaten bereit.
Sie können diese Dateien wie folgt in Ihrem Code importieren und verwenden:
import { AccountsService } from './generated/services/AccountsService';
import type { Accounts } from './generated/models/AccountsModel';
Datensätze erstellen
Verwenden Sie die generierten Modelltypen und Dienstmethoden, um neue Dataverse-Datensätze aus Ihrer Code-App zu erstellen.
Erstellen des Datensatzobjekts mithilfe des generierten Modells
Die generierten Modelle spiegeln das Schema Ihrer Dataverse-Tabelle wider. Verwenden Sie sie zum Erstellen von Datensatzobjekten.
Hinweis
Schließen Sie beim Erstellen eines Datensatzes vom System verwaltete oder schreibgeschützte Spalten wie Primärschlüssel und Besitzerfelder aus. Informationen dazu, welche Spalten schreibgeschützt sind, finden Sie unter Durchsuchen von Tabellendefinitionen in Ihrer Umgebung. Schließen Sie beispielsweise in der Tabelle "Konten" nicht die folgenden Felder ein:
- accountid
- Eigentümer-ID
- owneridname
- owneridtype
- owneridyominame
Erstellen Sie einen Datensatz mit nur den Feldern, die Sie auffüllen möchten. Wählen Sie beispielsweise die Entität „Konten“ aus:
const newAccount = { name: "New Account" statecode: 0, accountnumber: "ACCOO1" ... };Übermitteln des Datensatzes mithilfe des generierten Diensts
Verwenden Sie die Funktionen in der generierten Dienstdatei, um Ihren Datensatz zu übermitteln. Wählen Sie beispielsweise die Entität „Konten“ aus:
try { const result = await AccountsService.create(newAccount as Omit<Accounts, 'accountid'>); if (result.data) { console.log('Account created:', result.data); return result.data; } } catch (err) { console.error('Failed to create account:', err); throw err; };
Daten lesen
Sie können einen einzelnen Datensatz abrufen oder eine Abfrage erstellen, um mehrere Datensätze zurückzugeben.
Abrufen eines einzelnen Datensatzes
Zum Abrufen eines einzelnen Datensatzes benötigen Sie den Primärschlüssel (z. B. accountid).
const accountId = "<00000000-0000-0000-0000-000000000000>"; // Replace with actual ID value
try {
const result = await AccountsService.get(accountId);
if (result.data) {
console.log('Account retrieved:', result.data);
}
} catch (err) {
console.error('Failed to retrieve account:', err);
}
Abrufen mehrerer Datensätze
Verwenden Sie die getAll Methode, um alle Datensätze aus einer Dataverse-Tabelle abzurufen:
try {
const result = await AccountsService.getAll();
if (result.data) {
const accounts = result.data;
console.log(`Retrieved ${accounts.length} accounts`);
}
} catch (err) {
console.error('Failed to retrieve accounts:', err);
}
Die getAll Methode akzeptiert einen optionalen Parameter, der die IGetAllOptions Schnittstelle implementiert. Verwenden Sie diese Optionen, um die Abfrage anzupassen:
interface IGetAllOptions {
maxPageSize?: number; // Maximum number of records per page
select?: string[]; // Specific fields to retrieve
filter?: string; // OData filter string
orderBy?: string[]; // Fields to sort by
top?: number; // Maximum number of records to retrieve
skip?: number; // Number of records to skip
skipToken?: string; // Token for pagination
}
Von Bedeutung
Beschränken Sie immer die Anzahl der Spalten, die Sie mithilfe des select Parameters abrufen.
Hier ist ein Beispiel mit mehreren Optionen:
const fetchAccounts = async () => {
const options: IGetAllOptions = {
select: ['name', 'accountnumber', 'address1_city'],
filter: "address1_country eq 'USA'",
orderBy: ['name asc'],
top: 50
};
try {
const result = await AccountsService.getAll(options);
return result.data || [];
} catch (err) {
console.error('Failed to fetch accounts:', err);
return [];
}
};
Datensätze aktualisieren
Um einen Datensatz zu aktualisieren, benötigen Sie Folgendes:
- Der Primärschlüsselwert des Datensatzes. Beispielsweise mit der Kontotabelle, den
accountid-Wert. - Die Änderungen, die Sie vornehmen möchten.
Von Bedeutung
Wenn Sie einen Datensatz aktualisieren, schließen Sie nur die Eigenschaften ein, die Sie in der Anforderung ändern. Wenn Sie einige geänderte Eigenschaften eines Datensatzes festlegen, den Sie zuvor abgerufen und diese Daten in Ihre Anforderung eingeschlossen haben, aktualisieren Sie alle Eigenschaften, auch wenn sich deren Werte nicht geändert haben. Falsche Aktualisierungen wie diese können Geschäftslogik auslösen, die geänderte Werte erwartet, oder Überwachungsdaten beschädigen, um anzugeben, dass jemand Daten geändert hat, die sich nicht geändert haben.
In diesem Beispiel werden die name Und telephone1 Eigenschaften des Kontodatensatzes aktualisiert:
const accountId = "<your-account-guid>";
const changes = {
name: "Updated Account Name",
telephone1: "555-0123"
};
try {
await AccountsService.update(accountId, changes);
console.log('Account updated successfully');
} catch (err) {
console.error('Failed to update account:', err);
}
Löschen von Datensätzen in Dataverse
Zum Löschen eines Datensatzes benötigen Sie den Primärschlüsselwert des Datensatzes. Beispielsweise mit der Kontotabelle, den accountid-Wert.
Beispiel:
const accountId = "<00000000-0000-0000-0000-000000000000>"; // Replace with actual ID value
try {
await AccountsService.delete(accountId);
console.log('Account deleted successfully');
} catch (err) {
console.error('Failed to delete account:', err);
}
Nicht unterstützte Szenarien
Die folgenden Features werden noch nicht unterstützt:
- Polymorphes Nachschlagen
- Löschen von Dataverse-Datenquellen über PAC CLI
- Schemadefinition (Entitätsmetadaten) CRUD
- FetchXML-Unterstützung
- Alternative Schlüsselunterstützung