pac modelbuilder

Generador de código para las API y tablas de Dataverse

Utilice el comando pac modelbuilder build para generar clases .NET de enlace temprano para tablas Dataverse, mensajes personalizados y una clase derivada de Clase de contexto de servicio de organización. Obtenga más información sobre cómo usar este comando para generar clases enlazadas de forma temprana

La clase derivada de OrganizationServiceContext:

  • Mantiene el estado en el cliente para admitir funciones como la gestión de cambios.
  • Implementa la Interfaz System.Linq.IQueryable y un proveedor de consultas .NET Language-Integrated Query (LINQ) para que pueda escribir consultas LINQ usando datos Dataverse.

Para obtener más información sobre las capacidades que permite esta herramienta de generación de código:

Nota

El comando pac modelbuilder build reemplaza el paquete CrmSvcUtil.exe distribuido con el paquete Microsoft.CrmSdk.CoreTools NuGet .

Comandos

Command Description
Constructor de modelos pac Crea un modelo de código para las API y tablas de Dataverse

pac modelbuilder build

Crea un modelo de código para las API y tablas de Dataverse

Nota

Antes de poder usar el comando build, primero debe conectarse a Dataverse usando el comando pac auth create. Si tiene varias conexiones, utilice pac auth select para elegir el entorno Dataverse para el que desea generar código.

Ejemplo

El siguiente ejemplo muestra cómo usar el comando build con un símbolo del sistema.

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

Y el mismo comando usando PowerShell:

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

Importante

Debe encerrar cualquier parámetro de cadena entre comillas simples cuando usa PowerShell.

El resultado de este comando es que los siguientes archivos se escriben en la carpeta c:\src\MyApps\Model.

C:\src\MyApps\Modelo\
|---Entidades\
| |--account.cs
| |--contact.cs
|---Conjuntos de opciones\
| |--addresstypes.cs
|---Mensajes\
| |--examp_myapi.cs
|---EntityOptionSetEnum.cs
|---builderSettings.json
|---OrgContext.cs

builderSettings.json contiene los parámetros que especificó para el comando. Puede usarlo para regenerar rápidamente los archivos a medida que las cosas cambian. El siguiente ejemplo muestra el uso del archivo buildersettings.json generado desde el primer comando usando settingsTemplateFile:

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

También puede optar por crear un archivo builderSettings.json y usarlo en lugar de pasar todos los parámetros al comando. El siguiente es un ejemplo que es equivalente al primer ejemplo anterior:

{
  "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 pasa parámetros al comando mientras usa el parámetro settingsTemplateFile, los parámetros pasados ​​al comando anularán los establecidos en el archivo builderSettings.json .

No puede utilizar el parámetro settingsTemplateFile y el parámetro writesettingsTemplateFile al mismo tiempo.

Parámetros requeridos para modelbuilder build

--outdirectory-o

Directorio de escritura para archivos de entidad, mensaje y conjunto de opciones.

Parámetros opcionales para modelbuilder build

--emitentityetc-etc

Cuando se establece, incluye el ETC (código de tipo de entidad) de la entidad en el código generado.

Este parámetro no requiere ningún valor. Es un modificador.

--emitfieldsclasses-efc

Genera una estructura de constantes que contiene todos los nombres de campo por entidad en el momento de generar el código.

Este parámetro no requiere ningún valor. Es un modificador.

--emitvirtualattributes-eva

Cuando se establece, incluye atributos de nombre auxiliares para las búsquedas que permiten el filtrado de los valores de atributo de nombre principal de los atributos de búsqueda.

Este parámetro no requiere ningún valor. Es un modificador.

--entitynamesfilter-enf

Filtra la lista de entidades que se recuperan al leer datos Dataverse. Se pasa como una lista separada por punto y coma. Usando el formato <entitylogicalname>;<entitylogicalname>

--entitytypesfolder-etf

Nombre de carpeta que contiene entidades. El nombre predeterminado es "Entidades".

--environment-env

Especifica el Dataverse de destino. El valor puede ser una URL de Guid o HTTPS absoluta. Si no se especifica, se utilizará la organización activa seleccionada para el perfil de autenticación actual.

--generateGlobalOptionSets-go

Emita todos los Global OptionSets. Nota: Si una entidad contiene una referencia a un conjunto de opciones global, se emite aunque este modificador no esté presente.

--generatesdkmessages-a

Cuando se establece, emite clases de mensajes de SDK como parte de la generación de código.

Este parámetro no requiere ningún valor. Es un modificador.

--language-l

El idioma que se usará para el código de proxy generado. Este valor puede ser 'CS' o 'VB'. El idioma predeterminado es "CS".

--logLevel-ll

Nivel de registro. El valor predeterminado es "Desctivado".

Utilice uno de estos valores:

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

--messagenamesfilter-mnf

Filtra la lista de mensajes que se recuperan al leer datos Dataverse. Pasados como una lista separada por punto y coma, los mensajes obligatorios (Crear, Actualizar, Eliminar, Recuperar, Recuperar varios, Asociar y Desasociar) siempre se incluyen. Use un asterisco al final o al principio (*) con los nombres de los mensajes para permitir que todos los mensajes comiencen o terminen con una cadena. Usando el formato <messagename>;<messagename>.

--messagestypesfolder-mtf

Nombre de carpeta que contiene mensajes. El valor predeterminado es "Mensajes".

--namespace-n

El espacio de nombres para el código generado. El espacio de nombres predeterminado es el espacio de nombre global.

--optionsetstypesfolder-otf

Nombre de carpeta que contiene conjuntos de opciones. El nombre predeterminado es 'OptionSets'.

--serviceContextName-sctx

El nombre de archivo para el contexto de servicio. Si se pasa un valor, se usa para el contexto del servicio. Si no, no se genera contexto de servicio.

--settingsTemplateFile-stf

Contiene la configuración que se usará para esta ejecución del Dataverse Model Builder, anula cualquier parámetro duplicado en la línea de comando. No se puede configurar cuando se usa --writesettingstemplate.

--suppressGeneratedCodeAttribute-sgca

Cuando se establece, suprime el etiquetado de todos los objetos generados con el motor de generación de código y su versión

Este parámetro no requiere ningún valor. Es un modificador.

--suppressINotifyPattern

Cuando se habilita, no escribe los contenedores INotify para las propiedades y clases.

--writesettingsTemplateFile-wstf

Cuando se establece, escribe un archivo de configuración en el directorio de salida con la configuración actual pasada o la configuración predeterminada.

Comentarios

A continuación se presentan recomendaciones para usar el comando pac modelbuilder build.

Establezca los parámetros entitynamesfilter y messagenamesfilter

Precaución

Nosotros recomendamos encarecidamente que utilice los parámetros entitynamesfilter y messagenamesfilter para limitar los archivos generados a aquellos que usará en su proyecto. De lo contrario, el comando de compilación intentará generar código para todas las tablas y mensajes de Dataverse. Esto llevará una cantidad significativa de tiempo para procesarse.

Las clases para los mensajes que se encuentran en el espacio de nombres Microsoft.Crm.Sdk.Messages y Microsoft.Xrm.Sdk.Messages no se generan utilizando este comando. Solo debe incluir mensajes que no se encuentren allí en el parámetro messagenamesfilter, como acciones personalizadas.

Establezca suppressINotifyPattern si no está creando una aplicación WPF

Los contenedores INotify que se suprimen con este comando se utilizan para escenarios de enlace de datos con aplicaciones WPF. Si no está creando una aplicación WPF con el código generado, no las necesita. Use el parámetro suppressINotifyPattern para suprimirlos.

Incluir serviceContextName al generar clases de mensajes

Si está generando clases de mensajes, siempre debe incluir el parámetro serviceContextName para generar un OrganizationServiceContext, incluso si no lo está usando. Las clases de mensajes generados requieren una propiedad establecida en este archivo. Obtenga más información sobre el error que se produce si no configura esto.

Consulte también

Microsoft Power Platform Grupos de comandos de la CLI
Microsoft Power Platform Descripción general de CLI