pac modelbuilder

Générateur de code pour les API et les tables Dataverse

Utilisez la commande pac modelbuilder build pour générer des classes .NET à liaison anticipée pour des tables Dataverse, des messages personnalisés et une classe dérivée de la Classe OrganizationServiceContext. En savoir plus sur l’utilisation de cette commande pour générer des classes à liaison anticipée

La classe dérivée d'OrganizationServiceContext :

  • Tient à jour l’état sur le client pour prendre en charge des fonctionnalités telles que la gestion des modifications.
  • Implémente l'interface System.Linq.IQueryable et un fournisseur de requêtes .NET LINQ (Language-Integrated Query) afin que vous puissiez écrire des requêtes LINQ à l’aide de données Dataverse.

Pour plus d’informations sur les fonctionnalités activées par cet outil de génération de code :

Note

La commande pac modelbuilder build remplace l'exécutable CrmSvcUtil.exe distribué avec le package Microsoft.CrmSdk.CoreTools NuGet .

Commandes

Command Description
pac modelbuilder build Crée un modèle de code pour les API et les tables Dataverse

pac modelbuilder build

Crée un modèle de code pour les API et les tables Dataverse

Note

Avant de pouvoir utiliser la commande build , vous devez d’abord vous connecter à Dataverse à l’aide de la commande pac auth create . Si vous disposez de plusieurs connexions, utilisez pac auth select pour choisir l’environnement Dataverse pour lequel vous souhaitez générer du code.

Exemple

L'exemple suivant explique comment utiliser la commande build avec une invite de commande.

pac modelbuilder build ^
  --entitynamesfilter account;contact ^
  --generatesdkmessages ^
  --messagenamesfilter examp_* ^
  --emitfieldsclasses ^
  --emitVirtualAttributes ^
  --namespace MyApps.Model ^
  --outdirectory c:\src\MyApps\Model ^
  --writesettingsTemplateFile ^
  --serviceContextName OrgContext

Et la meme commande avec PowerShell :

pac modelbuilder build `
  --entitynamesfilter 'account;contact' `
  --generatesdkmessages `
  --messagenamesfilter 'examp_*' `
  --emitfieldsclasses `
  --emitVirtualAttributes `
  --namespace 'MyApps.Model' `
  --outdirectory 'c:\src\MyApps\Model' `
  --writesettingsTemplateFile `
  --serviceContextName 'OrgContext'

Important

Vous devez entourer de guillemets simples tous les paramètres de chaîne lorsque vous utilisez PowerShell.

Le résultat de cette commande est que les fichiers suivants sont écrits dans le dossier c:\src\MyApps\Model .

C:\src\MyApps\Model\
|---Entities\
| |--account.cs
| |--contact.cs
|---OptionSets\
| |--addresstypes.cs
|---Messages\
| |--examp_myapi.cs
|---EntityOptionSetEnum.cs
|---builderSettings.json
|---OrgContext.cs

builderSettings.json contient les paramètres que vous avez spécifiés pour la commande. Vous pouvez l’utiliser pour régénérer rapidement les fichiers à mesure que les choses changent. L’exemple suivant illustre l’utilisation du fichier buildersettings.json généré à partir de la première commande avec settingsTemplateFile :

pac modelbuilder build `
  --outdirectory c:\src\MyApps\Model `
  --settingsTemplateFile c:\src\MyApps\Model\builderSettings.json

Vous pouvez également choisir de créer un fichier builderSettings.json et de l’utiliser au lieu de transmettre tous les paramètres à la commande. Voici un exemple équivalent au premier exemple ci-dessus :

{
  "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
}

Si vous transmettez des paramètres à la commande tout en utilisant le paramètre settingsTemplateFile , les paramètres transmis à la commande remplaceront ceux définis dans le fichier builderSettings.json.

Vous ne pouvez pas utiliser en même temps le paramètre settingsTemplateFile et le paramètre writesettingsTemplateFile.

Paramètres obligatoires pour modelbuilder build

--outdirectory -o

Répertoire d’écriture pour les fichiers d’entité, de message et de groupe d’options.

Paramètres facultatifs pour modelbuilder build

--emitentityetc -etc

Une fois défini, inclut l’entité ETC (code de type d’entité) dans le code généré.

Ce paramètre ne requiert aucune valeur. C’est un commutateur.

--emitfieldsclasses -efc

Génère une structure de constantes qui contient tous les noms de champs par entité lors de la génération du code.

Ce paramètre ne requiert aucune valeur. C’est un commutateur.

--emitvirtualattributes -eva

Une fois défini, inclut les attributs virtuels des entités dans le code généré.

Ce paramètre ne requiert aucune valeur. C’est un commutateur.

--entitynamesfilter -enf

Filtre la liste des entités récupérées lors de la lecture des données de Dataverse. Transmis en tant que liste séparée par des points-virgules. Utilisation du format <entitylogicalname>;<entitylogicalname>

--entitytypesfolder -etf

Nom du dossier contenant des entités. Le nom par défaut est « Entités ».

--environment -env

Spécifie le Dataverse cible. La valeur peut être un GUID ou une URL https absolue. Lorsque la valeur n’est pas spécifiée, l’organisation active sélectionnée pour le profil d’authentification actuel sera utilisée.

--generateGlobalOptionSets -go

Émet tous les groupes d’options globales. Remarque : si une entité contient une référence à un groupe d’options globales, elle est émise même si ce changement n’est pas présent.

--generatesdkmessages -a

Une fois défini, émet des classes de messages Sdk dans le cadre de la génération de code.

Ce paramètre ne requiert aucune valeur. C’est un commutateur.

--language -l

Langage à utiliser pour le code proxy généré. Cette valeur peut être « CS » ou « VB ». Le langage par défaut est « CS ».

--logLevel -ll

Niveau de consignation. La valeur par défaut est « Désactivé ».

Utilisez l’une de ces valeurs :

  • Off
  • Critical
  • Error
  • Warning
  • Information
  • Verbose
  • ActivityTracing
  • All

--messagenamesfilter -mnf

Filtre la liste des messages récupérés lors de la lecture des données de Dataverse. Transmis en tant que liste séparée par des points-virgules ; les messages requis (Create, Update, Delete, Retrieve, RetrieveMultiple, Associate et Disassociate) sont toujours inclus. Utilisez un astérisque (*) à la fin ou au début avec les noms des messages pour autoriser tous les messages commençant ou se terminant par une chaîne. Utilisation du format <messagename>;<messagename>.

--messagestypesfolder -mtf

Nom du dossier contenant des messages. Le nom par défaut est « Messages ».

--namespace -n

Espace de noms du code généré. L’espace de noms par défaut est l’espace de noms global.

--optionsetstypesfolder -otf

Nom du dossier contenant des groupes d’options. Le nom par défaut est « OptionSets »

--serviceContextName -sctx

Nom du contexte de service généré. Si une valeur est transmise, elle est utilisée pour le contexte de service. Sinon, aucun contexte de service n’est généré.

--settingsTemplateFile -stf

Contient les paramètres à utiliser pour cette exécution de Dataverse Model Builder, remplace les paramètres en double sur la ligne de commande. Ne peut pas être défini lorsque --writesettingstemplate est utilisé.

--suppressGeneratedCodeAttribute -sgca

Une fois définie, cette option supprime tous les objets générés en cours de marquage avec le moteur et la version de génération de code

Ce paramètre ne requiert aucune valeur. C’est un commutateur.

--suppressINotifyPattern

Quand l’utilisateur est activé, n’écrit pas les wrappers INotify pour les propriétés et les classes.

--writesettingsTemplateFile -wstf

Lorsque cette option est définie, un fichier de paramètres est écrit dans le répertoire de sortie avec les paramètres actuels transmis ou les paramètres par défaut.

Remarques

Ci-après, des recommandations pour utiliser la commande pac modelbuilder build.

Définir les paramètres entitynamesfilter et messagenamesfilter

Avertissement

Nous recommandons fortement d’utiliser les paramètres entitynamesfilter et messagenamesfilter paramètres pour limiter les fichiers générés à ceux que vous utiliserez dans votre projet. Sinon, la commande build tentera de générer du code pour toutes les tables et tous les messages de Dataverse. Cela prendra beaucoup de temps à traiter.

Les classes pour les messages trouvés dans les espaces de nomsMicrosoft.Crm.Sdk.Messages et Microsoft.Xrm.Sdk.Messages ne sont pas générés avec cette commande. Vous ne devez inclure que les messages qui n'y figurent pas dans le paramètre messagenamesfilter, tels que les actions personnalisées.

Définir suppressINotifyPattern si vous ne créez pas une application WPF

Les wrappers INotify supprimés par cette commande sont utilisés pour les scénarios de liaison de données avec des applications WPF. Si vous ne créez pas une application WPF avec le code généré, vous n’en avez pas besoin. Utilisez le paramètre suppressINotifyPattern pour les supprimer.

Inclure serviceContextName lors de la génération de classes de messages

Si vous générez des classes de messages, vous devez toujours inclure le paramètre serviceContextName pour générer un OrganizationServiceContext, même si vous ne l’utilisez pas. Les classes de messages générées nécessitent une propriété définie dans ce fichier. En savoir plus sur l’erreur qui se produit si vous ne définissez pas cette option.

Voir aussi

Groupes de commandes Microsoft Power Platform CLI
Vue d’ensemble de Microsoft Power Platform CLI