Compartilhar via


pac modelbuilder

Gerador de código para APIs e tabelas do Dataverse

Use o comando pac modelbuilder build para gerar classes .NET associadas antecipadamente para tabelas do Dataverse, mensagens personalizadas e uma classe derivada da Classe OrganizationServiceContext. Saiba mais sobre como usar esse comando para gerar classes associadas antecipadamente

A classe derivada de OrganizationServiceContext:

  • Mantém o estado no cliente para dar suporte a recursos como gerenciamento de alterações.
  • Implementa a Interface System.Linq.IQueryable e um provedor de consultas LINQ (Consulta Language-Integrated do .NET) para que você possa escrever consultas LINQ usando dados do Dataverse.

Para obter mais informações sobre os recursos que essa ferramenta de geração de código habilita:

Observação

O pac modelbuilder build comando substitui o CrmSvcUtil.exe distribuído pelo pacote NuGet Microsoft.CrmSdk.CoreTools .

Commands

Command Description
pac modelbuilder build Cria um modelo de código para APIs e tabelas do Dataverse

pac modelbuilder build

Cria um modelo de código para APIs e tabelas do Dataverse

Observação

Antes de usar o build comando, primeiro você deve se conectar ao Dataverse usando o comando pac auth create . Se você tiver várias conexões, use a seleção de autenticação pac para escolher o ambiente do Dataverse para o qual deseja gerar código.

Example

O exemplo a seguir mostra como usar o build comando com um prompt de comando.

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

E o mesmo comando usando o PowerShell:

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

Importante

Você precisa cercar todos os parâmetros de cadeia de caracteres com aspas simples ao usar o PowerShell.

O resultado desse comando é que os seguintes arquivos são gravados na c:\src\MyApps\Model pasta.

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

builderSettings.json contém os parâmetros especificados para o comando. Você pode usá-lo para regenerar rapidamente os arquivos à medida que as coisas mudam. O exemplo a seguir mostra o uso do arquivo gerado buildersettings.json do primeiro comando usando as configuraçõesTemplateFile:

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

Você também pode optar por criar um builderSettings.json arquivo e usá-lo em vez de passar todos os parâmetros para o comando. Veja a seguir um exemplo equivalente ao primeiro exemplo acima:

{
  "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 você passar parâmetros para o comando ao usar o parâmetro settingsTemplateFile , os parâmetros passados para o comando substituirão os definidos no builderSettings.json arquivo.

Você não pode usar o parâmetro settingsTemplateFile e o parâmetro writeettingsTemplateFile ao mesmo tempo.

Parâmetros necessários para o build do modelbuilder

--outdirectory -o

Escreva o diretório para arquivos de entidade, mensagem e conjunto de opções.

Parâmetros opcionais para build de modelbuilder

--emitentityetc -etc

Quando definido, inclui a entidade ETC ( código de tipo de entidade) no código gerado.

Esse parâmetro não requer nenhum valor. É um comutador.

--emitfieldsclasses -efc

Gere uma estrutura de constantes que contenha todos os nomes de campo por entidade no momento da geração de código.

Esse parâmetro não requer nenhum valor. É um comutador.

--emitvirtualattributes -eva

Quando definido, inclui atributos de nome de suporte para pesquisas que permitem a filtragem nos valores de atributo de nome primário dos atributos de pesquisa.

Esse parâmetro não requer nenhum valor. É um comutador.

--entitynamesfilter -enf

Filtra a lista de entidades que são recuperadas ao ler dados do Dataverse. Fornecido como uma lista separada por ponto-e-vírgula. Usando o nome entitylogicalme< do formulário>;<entitylogicalname>

--entitytypesfolder -etf

Nome da pasta que contém entidades. O nome padrão é 'Entidades'.

--environment -env

Especifica o Dataverse de destino. O valor pode ser um Guid ou uma URL https absoluta. Quando não for especificado, a organização ativa selecionada para o perfil de autenticação atual será usada.

--generateGlobalOptionSets -go

Emita todos os OptionSets Globais. Observação: se uma entidade contiver uma referência a um conjunto de opções global, ela será emitida mesmo se essa opção não estiver presente.

--generatesdkmessages -a

Quando definido, emite classes de mensagem do Sdk como parte da geração de código.

Esse parâmetro não requer nenhum valor. É um comutador.

--language -l

O idioma a ser usado para o código proxy gerado. Esse valor pode ser 'CS' ou 'VB'. O idioma padrão é 'CS'.

--logLevel -ll

Nível de log. O valor padrão é "Desativado".

Use um destes valores:

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

--messagenamesfilter -mnf

Filtra a lista de mensagens que são recuperadas ao ler dados do Dataverse. Passadas como uma lista separada por ponto-e-vírgula, as mensagens necessárias (Criar, Atualizar, Excluir, Recuperar, RecuperarMultipla, Associar e Desassociar) são sempre incluídas. Use um asterisco à direita ou à esquerda (*) com os nomes das mensagens para permitir que todas as mensagens sejam iniciadas ou terminadas com uma cadeia de caracteres. Usando o nome da< mensagem do formulário>;<nome da> mensagem.

--messagestypesfolder -mtf

Nome da pasta que contém mensagens. O nome padrão é 'Mensagens'.

--namespace -n

O namespace para o código gerado. O namespace padrão é o namespace global.

--optionsetstypesfolder -otf

Nome da pasta que contém conjuntos de opções. O nome padrão é 'OptionSets'.

--serviceContextName -sctx

O nome do contexto de serviço gerado. Se um valor for passado, ele será usado para o Contexto do Serviço. Caso contrário, nenhum Contexto de Serviço será gerado.

--settingsTemplateFile -stf

Contém configurações a serem usadas para essa execução do Construtor de Modelos do Dataverse, substitui todos os parâmetros duplicados na linha de comando. Não é possível definir quando --writesettingstemplate é usado.

--suppressGeneratedCodeAttribute -sgca

Quando definido, isso suprime todos os objetos gerados que estão sendo marcados com o mecanismo de geração de código e a versão

Esse parâmetro não requer nenhum valor. É um comutador.

--suppressINotifyPattern

Quando habilitado, não grava os wrappers INotify para propriedades e classes.

--writesettingsTemplateFile -wstf

Quando definido, grava um arquivo de configurações no diretório de saída com as configurações atuais passadas ou as configurações padrão.

Observações

Veja a seguir as recomendações para usar o pac modelbuilder build comando.

Definir os entitynamesfilter parâmetros e messagenamesfilter

Cuidado

É altamente recomendável que você use os parâmetros entitynamesfilter e messagenamesfilter para limitar os arquivos gerados àqueles que você usará em seu projeto. Caso contrário, o comando de build tentará gerar código para todas as tabelas e mensagens do Dataverse. Isso levará muito tempo para ser processado.

Classes para as mensagens encontradas no namespace Microsoft.Crm.Sdk.Messages e Microsoft.Xrm.Sdk.Messages não são geradas usando esse comando. Você deve incluir apenas mensagens não encontradas no messagenamesfilter parâmetro, como ações personalizadas.

Definir suppressINotifyPattern se você não estiver criando um aplicativo WPF

Os INotify wrappers suprimidos por esse comando são usados para cenários de vinculação de dados com aplicativos WPF. Se você não estiver criando um aplicativo WPF com o código gerado, não precisará deles. Use o parâmetro suppressINotifyPattern para suprimi-los.

Incluir serviceContextName ao gerar classes de mensagem

Se você estiver gerando classes de mensagens, sempre deverá incluir o parâmetro serviceContextName para gerar um OrganizationServiceContext, mesmo que não esteja usando-o. As classes de mensagem geradas exigem um conjunto de propriedades neste arquivo. Saiba mais sobre o erro que ocorre se você não definir isso.

Consulte também

Grupos de comandos da CLI do Microsoft Power Platform
Visão geral da CLI do Microsoft Power Platform