pac modelbuilder
Codegenerator für Dataverse-APIs und -Tabellen
Verwenden Sie den Befehl pac modelbuilder build, um früh gebundene .NET-Klassen für Dataverse-Tabellen, benutzerdefinierte Nachrichten und eine Klasse zu erzeugen, die von der OrganizationServiceContext-Klasse abgeleitet ist. Erfahren Sie mehr über die Verwendung dieses Befehls zum Generieren früh gebundener Klassen
Die von OrganizationServiceContext abgeleitete Klasse:
- Behält den Status auf dem Client bei, um Funktionen wie das Änderungsmanagement zu unterstützen.
- Implementiert die System.Linq.IQueryable-Schnittstelle und einen .NET Language-Integrated Query (LINQ)-Abfrageanbieter, sodass Sie LINQ-Abfragen mit Dataverse-Daten schreiben können.
Weitere Informationen zu den Funktionen, die dieses Codegenerierungstool ermöglicht:
- Late-Bound- und Early-Bound-Programmierung mit dem Organisationsdienst
- Verwenden von OrganizationServiceContext
- Erstellen von Abfragen mit LINQ
Anmerkung
Der pac modelbuilder build
Befehl ersetzt das CrmSvcUtil.exe
verteilte Paket durch das Microsoft.CrmSdk.CoreTools NuGet .
Befehle
Command | Eigenschaft |
---|---|
Pac Modelbuilder bauen | Erstellt ein Codemodell für Dataverse-APIs und -Tabellen |
pac modelbuilder-Build
Erstellt ein Codemodell für Dataverse-APIs und -Tabellen
Anmerkung
Bevor Sie den Befehl build
verwenden können, müssen Sie sich zunächst mit dem Befehl pac auth create mit Dataverse verbinden. Wenn Sie über mehrere Verbindungen verfügen, verwenden Sie die pac auth select, um die Dataverse Umgebung auszuwählen, für die Sie Code generieren möchten.
Beispiel
Das folgende Beispiel zeigt, wie Sie den Befehl build
mit einer Eingabeaufforderung verwenden.
pac modelbuilder build ^
--entitynamesfilter account;contact ^
--generatesdkmessages ^
--messagenamesfilter examp_* ^
--emitfieldsclasses ^
--emitVirtualAttributes ^
--namespace MyApps.Model ^
--outdirectory c:\src\MyApps\Model ^
--writesettingsTemplateFile ^
--serviceContextName OrgContext
Und der gleiche Befehl mit PowerShell:
pac modelbuilder build `
--entitynamesfilter 'account;contact' `
--generatesdkmessages `
--messagenamesfilter 'examp_*' `
--emitfieldsclasses `
--emitVirtualAttributes `
--namespace 'MyApps.Model' `
--outdirectory 'c:\src\MyApps\Model' `
--writesettingsTemplateFile `
--serviceContextName 'OrgContext'
Wichtig
Wenn Sie PowerShell verwenden, müssen Sie alle Zeichenfolgenparameter in einfache Anführungszeichen setzen.
Das Ergebnis dieses Befehls ist, dass die folgenden Dateien in den Ordner c:\src\MyApps\Model
geschrieben werden.
C:\src\MyApps\Modell\
|---Entitäten\
| |--account.cs
| |--contact.cs
|---OptionSets\
| |--addresstypes.cs
|---Nachrichten\
| |--examp_myapi.cs
|---EntityOptionSetEnum.cs
|---builderSettings.json
|---OrgContext.cs
builderSettings.json enthält die Parameter, die Sie für den Befehl angegeben haben. Sie können damit die Dateien schnell neu generieren, wenn sich etwas ändert. Das folgende Beispiel zeigt die Verwendung der generierten buildersettings.json
Datei aus dem ersten Befehl mit settingsTemplateFile:
pac modelbuilder build `
--outdirectory c:\src\MyApps\Model `
--settingsTemplateFile c:\src\MyApps\Model\builderSettings.json
Sie können auch eine builderSettings.json
-Datei erstellen und diese verwenden, anstatt alle Parameter an den Befehl zu übergeben. Das Folgende ist ein Beispiel, das dem ersten Beispiel oben entspricht:
{
"suppressINotifyPattern": false,
"suppressGeneratedCodeAttribute": false,
"language": "CS",
"namespace": "MyApps.Model",
"serviceContextName": "OrgContext",
"generateSdkMessages": true,
"generateGlobalOptionSets": false,
"emitFieldsClasses": true,
"entityTypesFolder": "Entities",
"messagesTypesFolder": "Messages",
"optionSetsTypesFolder": "OptionSets",
"entityNamesFilter": [
"account",
"contact"
],
"messageNamesFilter": [
"examp_*"
],
"emitEntityETC": false,
"emitVirtualAttributes": true
}
Wenn Sie Parameter an den Befehl übergeben, während Sie den Parameter settingsTemplateFile verwenden, überschreiben die an den Befehl übergebenen Parameter die in der Datei builderSettings.json
festgelegten Parameter.
Sie können den Parameter settingsTemplateFile und den Parameter writesettingsTemplateFile nicht gleichzeitig verwenden.
Erforderliche Parameter für den Modelbuilder-Build
--outdirectory
-o
Verzeichnis zum Schreiben von Entitäts-, Nachrichten- und Optionssatzdateien
Optionale Parameter für den Modelbuilder-Build
--emitentityetc
-etc
Wenn festgelegt, wird die Entität ETC (Entitätstypcode) im generierte Code berücksichtigt.
Dieser Parameter benötigt keinen Wert. Es ist ein Umschalter.
--emitfieldsclasses
-efc
Generiert eine Konstantenstruktur, die alle Feldnamen nach Entität zum Zeitpunkt der Codegenerierung enthält.
Dieser Parameter benötigt keinen Wert. Es ist ein Umschalter.
--emitvirtualattributes
-eva
Wenn diese Option festgelegt ist, enthält sie unterstützende Namensattribute für Suchvorgänge, die die Filterung nach primären Namensattributnamen von Suchattributen ermöglichen.
Dieser Parameter benötigt keinen Wert. Es ist ein Umschalter.
--entitynamesfilter
-enf
Filtert die Liste der Entitäten, die beim Lesen von Daten aus Dataverse abgerufen werden. Wird als eine durch Semikolons getrennte Liste übergeben. Mit der Form <entitylogicalname>;<entitylogicalname>
--entitytypesfolder
-etf
Ordnername, der Entitäten enthält. Der Standardname lautet „Entitäten“.
--environment
-env
Gibt das Ziel-Dataverse an. Der Wert kann eine GUID oder eine absolute HTTPS-URL sein. Wenn nichts angegeben wird, wird die für das aktuelle Authentifizierungsprofil ausgewählte aktive Organisation verwendet.
--generateGlobalOptionSets
-go
Alle gobalen Optionssätze zurückgeben. Hinweis: Enthält eine Entität einen Verweis auf einen globalen Optionssatz, wird dieser auch dann ausgegeben, wenn dieser Schalter nicht vorhanden ist.
--generatesdkmessages
-a
Wenn festgelegt, werden SDK-Nachrichtenklassen bei der Codegenerierung ausgegeben.
Dieser Parameter benötigt keinen Wert. Es ist ein Umschalter.
--language
-l
Die für den generierten Proxy-Code zu verwendende Sprache. Der Wert kann entweder „CS“ oder „VB“ sein. Die Standardsprache ist CS.
--logLevel
-ll
Protokollebene. Der Standardwert ist „Aus“.
Verwenden Sie einen dieser Werte:
Off
Critical
Error
Warning
Information
Verbose
ActivityTracing
All
--messagenamesfilter
-mnf
Filtert die Liste der Nachrichten, die beim Lesen von Daten aus Dataverse abgerufen werden. Als eine durch Semikolons getrennte Liste übergeben, erforderliche Nachrichten (Create, Update, Delete, Retrieve, RetrieveMultiple, Associate und Disassociate) immer enthalten. Schließen Sie die Namen der Nachrichten in abschließende oder führende Sternchen (*) ein, damit alle Nachrichten berücksichtigt werden, die mit einer Zeichenfolge beginnen oder enden. Mit der Form <messagename>;<messagename>.
--messagestypesfolder
-mtf
Ordnername, der Nachrichten enthält. Der Standardname ist „Nachrichten“.
--namespace
-n
Der Namespace für den erstellten Code. Der Standard-Namespace ist der globale Namespace.
--optionsetstypesfolder
-otf
Ordnername, der Optionssätze enthält. Der Standardwert ist „OptionsSets“.
--serviceContextName
-sctx
Der Name für den erstellten Dienstkontext. Wenn ein Wert übergeben wird, wird er für den Servicekontext verwendet. Falls nicht, wird kein Servicekontext generiert.
--settingsTemplateFile
-stf
Enthält Einstellungen, die für diese Ausführung von Dataverse Model Builder verwendet werden sollen, überschreibt alle doppelten Parameter in der Befehlszeile. Kann nicht festgelegt werden, wenn --writesettingstemplate verwendet wird.
--suppressGeneratedCodeAttribute
-sgca
Wenn festgelegt, unterdrückt diese Option alle generierten Objekte, die mit dem Codegenerierungsmodul und der Version getaggt sind.
Dieser Parameter benötigt keinen Wert. Es ist ein Umschalter.
--suppressINotifyPattern
Bei Aktivierung werden die INotify-Wrapper nicht für Eigenschaften und Klassen geschrieben.
--writesettingsTemplateFile
-wstf
Wenn festgelegt, wird eine Einstellungsdatei in das Ausgabeverzeichnis mit den aktuell übermittelten Einstellungen oder Standardeinstellungen geschrieben
Anmerkungen
Im Folgenden finden Sie Empfehlungen für die Verwendung des Befehls pac modelbuilder build
.
Stellen Sie die Parameter entitynamesfilter
und messagenamesfilter
ein
Vorsicht
Wir empfehlen dringend dass Sie den entitynamesfilter und messagenamesfilter Parameter verwenden, um die generierten Dateien auf diejenigen zu beschränken, die Sie in Ihrem Projekt verwenden werden. Andernfalls versucht der Build-Befehl, Code für alle Tabellen und Nachrichten von Dataverse zu generieren. Die Bearbeitung wird viel Zeit in Anspruch nehmen.
Mit diesem Befehl werden keine Klassen für die im Namespace Microsoft.Crm.Sdk.Messages und Microsoft.Xrm.Sdk.Messages gefundenen Nachrichten generiert. Sie sollten nur Nachrichten, die dort nicht gefunden werden, in den Parameter messagenamesfilter
aufnehmen, z. B. benutzerdefinierte Aktionen.
Legen Sie suppressINotifyPattern
fest, wenn Sie keine WPF-Anwendung erstellen
Die von diesem Befehl unterdrückten INotify
Wrapper werden für Datenbindungsszenarien mit WPF-Anwendungen verwendet. Wenn Sie mit dem generierten Code keine WPF-Anwendung erstellen, benötigen Sie ihn nicht. Verwenden Sie den Parameter suppressIOtifyPattern, um sie zu unterdrücken.
Beim Generieren von Nachrichtenklassen serviceContextName
einschließen
Wenn Sie Nachrichtenklassen generieren, sollten Sie immer den Parameter serviceContextName einschließen, um einen OrganizationServiceContext zu generieren, auch wenn Sie ihn nicht verwenden. Die generierten Nachrichtenklassen erfordern einen Eigenschaftssatz in dieser Datei. Erfahren Sie mehr über den Fehler, der auftritt, wenn Sie dies nicht festlegen.
Siehe auch
Microsoft Power Platform CLI-Befehlsgruppen
Microsoft Power Platform CLI-Übersicht