Compartir por


Construtor de modelos PAC

Xerador de código para APIs e táboas de Dataverse

Use o comando pac modelbuilder build para xerar clases .NET vinculadas precozmente para táboas de Dataverse, mensaxes personalizadas e unha clase derivada da clase OrganizationServiceContext. Máis información sobre o uso deste comando para xerar clases de enlace temperán

A clase derivada de OrganizationServiceContext:

  • Mantén o estado no cliente para soportar funcións como a xestión de cambios.
  • Implementa a interface System.Linq.IQueryable e un provedor de consultas .NET Language-Integrated Query (LINQ) para que poida escribir consultas LINQ usando datos de Dataverse.

Para obter máis información sobre as capacidades que permite esta ferramenta de xeración de código:

Nota

O pac modelbuilder build comando substitúe o CrmSvcUtil.exe distribuído polo paquete NuGet Microsoft.CrmSdk.CoreTools .

Comandos

Comando Descripción
Construción de Pac ModelBuilder Constrúe un modelo de código para APIs e táboas de Dataverse

Construción de Pac ModelBuilder

Constrúe un modelo de código para APIs e táboas de Dataverse

Nota

Antes de poder usar o build comando, primeiro debes conectarte a Dataverse usando o comando pac auth create . Se tes varias conexións, use a selección de autenticación pac para escoller o entorno de Dataverse para o que queres xerar código.

Exemplo

O seguinte exemplo móstrase como usar o build comando cun prompt de comandos.

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

O mesmo 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

Debes rodear todos os parámetros de cadea con comiñas simples cando usas PowerShell.

O resultado deste comando é que os seguintes ficheiros son escritos no c:\src\MyApps\Model cartafol.

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

builderSettings.json contén os parámetros especificados para o comando. Podes usalo para rexenerar rapidamente os ficheiros a medida que as cousas cambien. O seguinte exemplo mostra o uso do ficheiro xerado buildersettings.json desde o primeiro comando usando settingsTemplateFile:

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

Tamén podes escoller crear un builderSettings.json ficheiro e usalo en lugar de pasar todos os parámetros ao comando. A continuación móstrase un exemplo equivalente ao primeiro exemplo 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
}

Se pasa parámetros ao comando mentres usa o parámetro settingsTemplateFile , os parámetros pasados ao comando substituirán os establecidos no builderSettings.json ficheiro.

Non pode usar o parámetro settingsTemplateFile e o parámetro writesettingsTemplateFile ao mesmo tempo.

Parámetros necesarios para a construción do construtor de modelos

--outdirectory -o

Escribe o directorio para os ficheiros de entidades, mensaxes e conxuntos de opcións.

Parámetros opcionais para a construción de modelbuilder

--emitentityetc -etc

Cando se establece, inclúe a entidade ETC (código de tipo de entidade) no código xerado.

Este parámetro non precisa de valor. É un cambio.

--emitfieldsclasses -efc

Xerar unha estrutura de constantes que conteña todos os nomes de campo por entidade no momento da xeración do código.

Este parámetro non precisa de valor. É un cambio.

--emitvirtualattributes -eva

Cando se establece, inclúe atributos de nome de soporte para buscas que permiten filtrar os valores dos atributos de nome principal dos atributos de busca.

Este parámetro non precisa de valor. É un cambio.

--entitynamesfilter -enf

Filtra a lista de entidades que se obteñen ao ler datos de Dataverse. Aprobado como unha lista separada por punto e virgula. Usando o formulario <entitylogicalname>;<entitylogicalname>

--entitytypesfolder -etf

Nome do cartafol que contén entidades. O nome predeterminado é "Entidades".

--environment -env

Especifica o Dataverse de destino. O valor pode ser un Guid ou un URL https absoluto. Cando non se especifique, utilizarase a organización activa seleccionada para o perfil de autenticación actual.

--generateGlobalOptionSets -go

Emite todos os conxuntos de opcións globais. Nota: Se unha entidade contén unha referencia a un conxunto de opcións globais, emítese aínda que este interruptor non estea presente.

--generatesdkmessages -a

Cando se establece, emite clases de mensaxes Sdk como parte da xeración de código.

Este parámetro non precisa de valor. É un cambio.

--language -l

A linguaxe a empregar para o código proxy xerado. Este valor pode ser "CS" ou "VB". O idioma por defecto é "CS".

--logLevel -ll

Nivel de rexistro. O valor predeterminado é "Desactivado".

Utiliza un destes valores:

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

--messagenamesfilter -mnf

Filtra a lista de mensaxes que se recuperan ao ler datos de Dataverse. Pasadas como unha lista separada por punto e virgula, sempre se inclúen as mensaxes necesarias (Crear, Actualizar, Eliminar, Recuperar, Recuperar, Asociar e Desasociar). Use un asterisco final ou inicial (*) cos nomes das mensaxes para permitir todas as mensaxes que comezan ou rematan cunha cadea. Usando o formulario <messagename;><Nome> da mensaxe.

--messagestypesfolder -mtf

Nome do cartafol que contén mensaxes. O nome predeterminado é "Mensaxes".

--namespace -n

Espazo de nomes para o código xerado. O espazo de nomes predeterminado é o espazo de nomes global.

--optionsetstypesfolder -otf

Nome do cartafol que contén conxuntos de opcións. O nome predeterminado é "OptionSets".

--serviceContextName -sctx

Nome do contexto do servizo xerado. Se se pasa un valor, utilízase para o contexto do servizo. De non ser así, non se xera ningún contexto de servizo.

--settingsTemplateFile -stf

Contén a configuración que se empregará para esta execución do Construtor de modelos de Dataverse, anula calquera parámetro duplicado na liña de comandos. Non se pode definir cando se usa --writesettingstemplate.

--suppressGeneratedCodeAttribute -sgca

Cando se establece, isto suprime todos os obxectos xerados que están etiquetados co motor de xeración de código e a versión

Este parámetro non precisa de valor. É un cambio.

--suppressINotifyPattern

Cando está activado, non escribe os envoltorios de INotify para propiedades e clases.

--writesettingsTemplateFile -wstf

Cando está configurado, escribe un ficheiro de configuración no cartafol de saída coa configuración actual pasada ou a configuración predeterminada.

Comentarios

A continuación móstranse recomendacións para usar o pac modelbuilder build comando.

Establecer os entitynamesfilter parámetros e messagenamesfilter

Precaución

Recoméndase encarecidamente que use os parámetros entitynamesfilter e messagenamesfilter para limitar os ficheiros xerados aos que usará no seu proxecto. En caso contrario, o comando build intentará xerar código para todas as táboas e mensaxes de Dataverse. Isto levará moito tempo para procesarse.

As clases para as mensaxes que se atopan nos espazos de nomes Microsoft.Crm.Sdk.Messages e Microsoft.Xrm.Sdk.Messages non se xeran usando este comando. Só debe incluír mensaxes que non se atopan alí no messagenamesfilter parámetro, como accións personalizadas.

Establecer suppressINotifyPattern se non está a construír unha aplicación WPF

Os INotify envoltorios que son suprimidos por este comando úsanse para escenarios de enlace de datos con aplicacións WPF. Se non estás a construír unha aplicación WPF co código xerado, non os necesitas. Use o parámetro suppressINotifyPattern para suprimilos.

Incluír serviceContextName ao xerar clases de mensaxes

Se está a xerar clases de mensaxes, sempre debe incluír o parámetro serviceContextName para xerar un OrganizationServiceContext, aínda que non o estea a usar. As clases de mensaxes xeradas requiren unha propiedade establecida neste ficheiro. Máis información sobre o erro que se produce se non o configuras.

Consulte tamén

Grupos de comandos da CLI de Microsoft Power Platform
Visión xeral da CLI de Microsoft Power Platform