Partilhar via


Construtor de modelos PAC

Gerador de código para APIs e tabelas do Dataverse

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

A classe deriva de OrganizationServiceContext:

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

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

Observação

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

Commands

Command Description
construção do pac modelbuilder Cria um modelo de código para APIs e tabelas do Dataverse

construção do pac modelbuilder

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

Observação

Antes de usar o build comando, você deve primeiro se conectar ao Dataverse usando o comando pac auth create . Se você tiver várias conexões, use a seleção pac auth para escolher o ambiente 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 quaisquer 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
|---Mensagens\
| |--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 a partir do primeiro comando usando o settingsTemplateFile:

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. Segue-se 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 enquanto estiver usando o parâmetro settingsTemplateFile , os parâmetros passados para o comando substituirão os definidos no builderSettings.json arquivo.

Não é possível usar o parâmetro settingsTemplateFile e o parâmetro writesettingsTemplateFile ao mesmo tempo.

Parâmetros necessários para a compilação do modelbuilder

--outdirectory -o

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

Parâmetros opcionais para a compilação do modelbuilder

--emitentityetc -etc

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

Este parâmetro não requer valor. É uma mudança.

--emitfieldsclasses -efc

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

Este parâmetro não requer valor. É uma mudança.

--emitvirtualattributes -eva

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

Este parâmetro não requer valor. É uma mudança.

--entitynamesfilter -enf

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

--entitytypesfolder -etf

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

--environment -env

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

--generateGlobalOptionSets -go

Emita todos os Conjuntos de Opções Globais. Nota: Se uma entidade contiver uma referência a um conjunto de opções global, ela será emitida mesmo que essa opção não esteja presente.

--generatesdkmessages -a

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

Este parâmetro não requer valor. É uma mudança.

--language -l

A linguagem a ser usada 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 é 'Off'.

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, Recuperar, 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 comecem ou terminem com uma cadeia de caracteres. Usando o formulário <messagename>;<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 de Serviço. Caso contrário, nenhum contexto de serviço será gerado.

--settingsTemplateFile -stf

Contém Configurações a serem usadas para esta execução do Dataverse Model Builder, substitui quaisquer 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

Este parâmetro não requer valor. É uma mudança.

--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 passadas atuais ou as configurações padrão.

Observações

A seguir estão as recomendações para usar o pac modelbuilder build comando.

Definir os entitynamesfilter parâmetros e messagenamesfilter

Atenção

É 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 build tentará gerar código para todas as tabelas e mensagens do Dataverse. Isso levará uma quantidade significativa de tempo para processar.

As 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ê só deve incluir mensagens não encontradas lá no messagenamesfilter parâmetro, como ações personalizadas.

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

Os INotify wrappers que são suprimidos por este 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 suppressINotifyPattern parâmetro para suprimi-los.

Incluir serviceContextName ao gerar classes de mensagem

Se você estiver gerando classes de mensagem, deverá sempre incluir o parâmetro serviceContextName para gerar um OrganizationServiceContext, mesmo que não o esteja usando. As classes de mensagem geradas requerem uma propriedade definida 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