Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Saiba como criar e atualizar definições de tabela do Dataverse usando a API Web, incluindo como definir uma coluna de nome primário, preservar rótulos localizados e publicar alterações de metadados. Você pode executar as mesmas operações usando o SDK para .NET. O SDK do Dataverse para Python usa a API Web.
Para obter detalhes sobre as propriedades de definição de tabela, consulte Personalizar definições de tabela e EntityMetadata EntityType.
Tip
Entidades, atributos e conjuntos de opções globais (também conhecidos como tabelas, colunas e opções) são todos componentes da solução. Ao criá-los, você pode associá-los a uma solução usando o MSCRM.SolutionUniqueName cabeçalho de solicitação opcional e definindo o valor como o nome exclusivo da solução da qual ele deve fazer parte.
Saiba como associar um componente de solução a uma solução
Criar definições de tabela
Para criar uma definição de tabela, POST a representação JSON da EntityMetadata para o caminho do EntityDefinitions conjunto de entidades. A entidade deve incluir a definição da coluna de nome primário na Attributes propriedade de navegação com valor de coleção. Você não precisa definir valores para todas as propriedades. Os itens desta lista, exceto por Description, são necessários. Definir uma descrição é uma prática recomendada. Os valores de propriedade que você não especificar são definidos como valores padrão. Para entender os valores padrão, consulte o exemplo na seção Atualizar definições de tabela . O exemplo neste artigo usa as seguintes propriedades de entidade.
Propriedades da tabela necessárias
Esta tabela lista as propriedades que devem ter valores ao criar uma definição de tabela.
| Propriedade EntityMetadata | Valor de exemplo |
|---|---|
SchemaName |
new_BankAccount Observação: Inclua o prefixo de personalização que corresponde ao editor da solução. O valor padrão é new_. Escolha o prefixo que funciona para sua solução porque você não pode alterá-lo mais tarde. |
DisplayName |
Bank Account |
DisplayCollectionName |
Bank Accounts |
Description |
Contains data about customer bank accounts.| |
OwnershipType |
UserOwned | OrganizationOwned Observação: Para obter os valores que você pode definir aqui, consulte OwnershipTypes EnumType. |
IsActivity |
false |
HasActivities |
false |
HasNotes |
false |
Além das propriedades listadas anteriormente, a EntityMetadata.Attributes propriedade deve conter uma matriz que inclua um StringAttributeMetadata EntityType para representar o atributo de nome primário para a entidade. A propriedade de atributo AttributeMetadata.IsPrimaryName deve ser verdadeira. A tabela a seguir descreve as propriedades definidas no exemplo.
| Propriedade Atributo Primário | Valor de exemplo |
|---|---|
SchemaName |
new_AccountName |
RequiredLevel |
None Observação: Esse é um tipo complexo. Para obter os valores que você pode definir aqui, consulte AttributeRequiredLevelManagedProperty complex type and AttributeRequiredLevel EnumType. |
MaxLength |
100 |
FormatName |
Text Observação: O atributo de nome primário deve usar o formato De texto. Para opções de formato disponíveis para outros atributos de cadeia de caracteres, consulte formatos de cadeia de caracteres. |
DisplayName |
Account Name |
Description |
Type the name of the bank account. |
IsPrimaryName |
true |
Note
Ao criar ou atualizar rótulos usando o tipo complexo Rótulo, defina apenas a LocalizedLabels propriedade. O UserLocalizedLabel valor retornado baseia-se na preferência de idioma do usuário e é somente leitura.
O exemplo a seguir mostra a criação de uma tabela personalizada com o conjunto de propriedades. O idioma é inglês usando a LCID (ID de localidade) de 1033. Os valores válidos de ID de localidade podem ser encontrados no gráfico de ID de localidade (LCID).
Solicitação:
POST [Organization URI]/api/data/v9.2/EntityDefinitions HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
MSCRM.SolutionUniqueName: examplesolution
{
"@odata.type": "Microsoft.Dynamics.CRM.EntityMetadata",
"SchemaName": "new_BankAccount",
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "An entity to store information about customer bank accounts",
"LanguageCode": 1033
}
]
},
"DisplayCollectionName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Bank Accounts",
"LanguageCode": 1033
}
]
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Bank Account",
"LanguageCode": 1033
}
]
},
"HasActivities": false,
"HasNotes": false,
"IsActivity": false,
"OwnershipType": "UserOwned",
"Attributes": [
{
"AttributeType": "String",
"AttributeTypeName": {
"Value": "StringType"
},
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Type the name of the bank account",
"LanguageCode": 1033
}
]
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account Name",
"LanguageCode": 1033
}
]
},
"IsPrimaryName": true,
"RequiredLevel": {
"Value": "None",
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
},
"SchemaName": "new_AccountName",
"@odata.type": "Microsoft.Dynamics.CRM.StringAttributeMetadata",
"FormatName": {
"Value": "Text"
},
"MaxLength": 100
}
]
}
Resposta:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/EntityDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
Atualizar definições de tabela
Importante
Você não pode usar o PATCH método para atualizar entidades de modelo de dados. As definições de tabela têm paridade com o SDK para .NET Classe UpdateEntityRequest que substitui a definição de entidade pela incluída.
Portanto, você deve usar o PUT método ao atualizar entidades de modelo de dados e ter cuidado para incluir todas as propriedades existentes que você não pretende alterar.
Você não pode atualizar propriedades individuais.
Ao atualizar definições de tabela com rótulos, inclua um cabeçalho de solicitação personalizado MSCRM.MergeLabels para controlar como os rótulos na atualização são tratados. Se um rótulo para um item já tiver rótulos para outros idiomas e você atualizá-lo com um rótulo que contenha apenas um rótulo para um idioma específico, o MSCRM.MergeLabels cabeçalho controlará se deseja substituir os rótulos existentes ou mesclar seu novo rótulo com quaisquer rótulos de idioma existentes. Defina MSCRM.MergeLabels para true garantir que novos rótulos substituam apenas os rótulos existentes quando o código de idioma corresponder. Se você quiser substituir os rótulos existentes para incluir apenas os rótulos incluídos, defina MSCRM.MergeLabels como false.
Saiba mais sobre cabeçalhos de solicitação com suporte
Importante
Se você não incluir um MSCRM.MergeLabels cabeçalho, o comportamento padrão será como se o valor fosse false e sua atualização removerá outros rótulos localizados.
Ao atualizar uma definição de tabela ou coluna, use a Ação PublishXml antes que as alterações feitas sejam aplicadas aos aplicativos controlados por modelos. Para obter mais informações, consulte Publicar personalizações.
Normalmente, você recupera a definição JSON da definição de tabela ou coluna e modifica as propriedades antes de enviá-la de volta. O exemplo a seguir contém todas as propriedades de definição da tabela criada no exemplo criar definições de tabela , mas com a alteração DisplayName para "Nome comercial do banco". Observe como os dados JSON incluem os valores padrão para propriedades não definidas no exemplo criar definições de tabela .
Note
Este exemplo usa a LogicalName chave para identificar exclusivamente a definição de tabela que está sendo atualizada. Você também pode usar o valor da MetadataId chave primária. Essa opção geralmente é mais fácil do que procurar o MetadataId valor. Para obter mais informações, consulte Recuperar definições de tabela por nome ou MetadadosId.
Solicitação:
PUT [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='new_bankaccount') HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
MSCRM.MergeLabels: true
MSCRM.SolutionUniqueName: examplesolution
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#EntityDefinitions/$entity",
"ActivityTypeMask": 0,
"AutoRouteToOwnerQueue": false,
"CanTriggerWorkflow": true,
"Description": {
"LocalizedLabels": [
{
"Label": "An entity to store information about customer bank accounts",
"LanguageCode": 1033,
"IsManaged": false,
"MetadataId": "edc3abd7-c5ae-4822-a3ed-51734fdd0469",
"HasChanged": null
}
]
},
"DisplayCollectionName": {
"LocalizedLabels": [
{
"Label": "Bank Accounts",
"LanguageCode": 1033,
"IsManaged": false,
"MetadataId": "7c758e0c-e9cf-4947-93b0-50ec30b20f60",
"HasChanged": null
}
]
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Bank Business Name",
"LanguageCode": 1033
}
]
},
"EntityHelpUrlEnabled": false,
"EntityHelpUrl": null,
"IsDocumentManagementEnabled": false,
"IsOneNoteIntegrationEnabled": false,
"IsInteractionCentricEnabled": false,
"IsKnowledgeManagementEnabled": false,
"AutoCreateAccessTeams": false,
"IsActivity": false,
"IsActivityParty": false,
"IsAuditEnabled": {
"Value": false,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyauditsettings"
},
"IsAvailableOffline": false,
"IsChildEntity": false,
"IsAIRUpdated": false,
"IsValidForQueue": {
"Value": false,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyqueuesettings"
},
"IsConnectionsEnabled": {
"Value": false,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyconnectionsettings"
},
"IconLargeName": null,
"IconMediumName": null,
"IconSmallName": null,
"IsCustomEntity": true,
"IsBusinessProcessEnabled": false,
"IsCustomizable": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "iscustomizable"
},
"IsRenameable": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "isrenameable"
},
"IsMappable": {
"Value": true,
"CanBeChanged": false,
"ManagedPropertyLogicalName": "ismappable"
},
"IsDuplicateDetectionEnabled": {
"Value": false,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyduplicatedetectionsettings"
},
"CanCreateAttributes": {
"Value": true,
"CanBeChanged": false,
"ManagedPropertyLogicalName": "cancreateattributes"
},
"CanCreateForms": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "cancreateforms"
},
"CanCreateViews": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "cancreateviews"
},
"CanCreateCharts": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "cancreatecharts"
},
"CanBeRelatedEntityInRelationship": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canberelatedentityinrelationship"
},
"CanBePrimaryEntityInRelationship": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canbeprimaryentityinrelationship"
},
"CanBeInManyToMany": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canbeinmanytomany"
},
"CanEnableSyncToExternalSearchIndex": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canenablesynctoexternalsearchindex"
},
"SyncToExternalSearchIndex": false,
"CanModifyAdditionalSettings": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyadditionalsettings"
},
"CanChangeHierarchicalRelationship": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canchangehierarchicalrelationship"
},
"IsOptimisticConcurrencyEnabled": true,
"ChangeTrackingEnabled": false,
"IsImportable": true,
"IsIntersect": false,
"IsMailMergeEnabled": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifymailmergesettings"
},
"IsManaged": false,
"IsEnabledForCharts": true,
"IsEnabledForTrace": false,
"IsValidForAdvancedFind": true,
"IsVisibleInMobile": {
"Value": false,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifymobilevisibility"
},
"IsVisibleInMobileClient": {
"Value": false,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifymobileclientvisibility"
},
"IsReadOnlyInMobileClient": {
"Value": false,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifymobileclientreadonly"
},
"IsOfflineInMobileClient": {
"Value": false,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifymobileclientoffline"
},
"DaysSinceRecordLastModified": 0,
"IsReadingPaneEnabled": true,
"IsQuickCreateEnabled": false,
"LogicalName": "new_bankaccount",
"ObjectTypeCode": 10009,
"OwnershipType": "UserOwned",
"PrimaryNameAttribute": "new_accountname",
"PrimaryImageAttribute": null,
"PrimaryIdAttribute": "new_bankaccountid",
"Privileges": [
{
"CanBeBasic": true,
"CanBeDeep": true,
"CanBeGlobal": true,
"CanBeLocal": true,
"CanBeEntityReference": false,
"CanBeParentEntityReference": false,
"Name": "prvCreatenew_BankAccount",
"PrivilegeId": "d1a8de4b-27df-42e1-bc5c-b863e002b37f",
"PrivilegeType": "Create"
},
{
"CanBeBasic": true,
"CanBeDeep": true,
"CanBeGlobal": true,
"CanBeLocal": true,
"CanBeEntityReference": false,
"CanBeParentEntityReference": false,
"Name": "prvReadnew_BankAccount",
"PrivilegeId": "726043b1-de2c-487e-9d6d-5629fca2bf22",
"PrivilegeType": "Read"
},
{
"CanBeBasic": true,
"CanBeDeep": true,
"CanBeGlobal": true,
"CanBeLocal": true,
"CanBeEntityReference": false,
"CanBeParentEntityReference": false,
"Name": "prvWritenew_BankAccount",
"PrivilegeId": "fa50c539-b6c7-4eaf-bd49-fd8224bc51b6",
"PrivilegeType": "Write"
},
{
"CanBeBasic": true,
"CanBeDeep": true,
"CanBeGlobal": true,
"CanBeLocal": true,
"CanBeEntityReference": false,
"CanBeParentEntityReference": false,
"Name": "prvDeletenew_BankAccount",
"PrivilegeId": "17c1fd6e-f856-45e7-b563-796f53108b85",
"PrivilegeType": "Delete"
},
{
"CanBeBasic": true,
"CanBeDeep": true,
"CanBeGlobal": true,
"CanBeLocal": true,
"CanBeEntityReference": false,
"CanBeParentEntityReference": false,
"Name": "prvAssignnew_BankAccount",
"PrivilegeId": "133ca81d-668e-4c19-a71e-10c6dfe099cd",
"PrivilegeType": "Assign"
},
{
"CanBeBasic": true,
"CanBeDeep": true,
"CanBeGlobal": true,
"CanBeLocal": true,
"CanBeEntityReference": false,
"CanBeParentEntityReference": false,
"Name": "prvSharenew_BankAccount",
"PrivilegeId": "15f27df4-9c67-47c9-b1f1-274e1c44f24a",
"PrivilegeType": "Share"
},
{
"CanBeBasic": true,
"CanBeDeep": true,
"CanBeGlobal": true,
"CanBeLocal": true,
"CanBeEntityReference": false,
"CanBeParentEntityReference": false,
"Name": "prvAppendnew_BankAccount",
"PrivilegeId": "ac8b1920-8f93-4e9d-94e3-c680e2a2f228",
"PrivilegeType": "Append"
},
{
"CanBeBasic": true,
"CanBeDeep": true,
"CanBeGlobal": true,
"CanBeLocal": true,
"CanBeEntityReference": false,
"CanBeParentEntityReference": false,
"Name": "prvAppendTonew_BankAccount",
"PrivilegeId": "f63a5f46-3bc7-4eac-81d0-7f77f566ef46",
"PrivilegeType": "AppendTo"
}
],
"RecurrenceBaseEntityLogicalName": null,
"ReportViewName": "Filterednew_BankAccount",
"SchemaName": "new_BankAccount",
"IntroducedVersion": "1.0",
"IsStateModelAware": true,
"EnforceStateTransitions": false,
"EntityColor": null,
"LogicalCollectionName": "new_bankaccounts",
"CollectionSchemaName": "new_BankAccounts",
"EntitySetName": "new_bankaccounts",
"IsEnabledForExternalChannels": false,
"IsPrivate": false,
"MetadataId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"HasChanged": null
}
Resposta:
HTTP/1.1 204 No Content
OData-Version: 4.0
Consulte também
Usar a API Web com metadados Microsoft Dataverse
Criar e atualizar definições de coluna usando a API Web
Consultar definições de tabela usando a API Web
Recuperar definições de tabela por nome ou MetadataId
Modelar relações de tabela usando a API Web
Trabalhar com definições de tabela usando o SDK para .NET
Definições de coluna (atributo)
Exemplo de operações de esquema de tabela da API Web
Exemplo de operações de esquema de tabela de API Web (C#)