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:
- Programación en tiempo real y en tiempo real utilizando el servicio de organización
- Utilice OrganizationServiceContext
- Crear consultas con LINQ
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