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:

Anmerkung

Der pac modelbuilder build Befehl ersetzt das CrmSvcUtil.exe verteilte Paket mit dem Microsoft.CrmSdk.CoreTools NuGet Paket.

Befehle

Command Beschreibung
pac modelbuilder-Build 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\Model\
|---Entities\
| |--account.cs
| |--contact.cs
|---OptionSets\
| |--addresstypes.cs
|---Messages\
| |--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 festgelegt, werden die virtuellen Attribute von Entitäten im generierten Code berücksichtigt.

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.

Klassen für die Nachrichten, die in den Microsoft.Crm.Sdk.Messages und Microsoft.Xrm.Sdk.Messages Namespace gefunden werden, werden mit diesem Befehl nicht 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