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.
Chaves alternativas no Microsoft Dataverse permitem identificar exclusivamente linhas de tabela usando colunas de negócios em vez de apenas uma chave primária GUID. Esses identificadores são a chave primária para cada tabela. Quando você precisar se integrar a um armazenamento de dados externo, poderá adicionar uma coluna às tabelas de banco de dados externas para conter uma referência ao identificador exclusivo de uma linha no Dataverse. No entanto, às vezes, você não pode modificar o banco de dados externo. Usando chaves alternativas, você pode definir uma coluna em uma tabela do Dataverse para corresponder a um identificador exclusivo (ou combinação exclusiva de colunas) usado pelo armazenamento de dados externo. Essa chave alternativa pode identificar exclusivamente uma linha no Dataverse no lugar da chave primária. Você deve ser capaz de definir quais colunas representam uma identidade exclusiva para suas linhas. Depois de identificar as colunas exclusivas da tabela, você poderá declará-las como chaves alternativas por meio da interface do usuário (interface do usuário) de personalização ou no código. Este artigo fornece informações sobre como definir chaves alternativas no modelo de dados.
Criar chaves alternativas
Você pode criar chaves alternativas programaticamente ou usando as ferramentas de personalização. Para obter mais informações sobre como usar as ferramentas de personalização, consulte Definir chaves alternativas usando o Power Apps.
Para definir chaves alternativas programaticamente, primeiro crie um objeto de tipo EntityKeyMetadata (ou use EntityKeyMetadata EntityType se estiver trabalhando com a API Web). Essa classe contém as colunas principais. Depois de definir as colunas de chave, use CreateEntityKey para criar as chaves de uma tabela. Essa mensagem usa o nome da tabela e EntityKeyMetadata os valores como entrada para criar a chave.
Lembre-se das seguintes restrições ao criar chaves alternativas:
Colunas válidas em definições de tabela de chave
Inclua somente colunas dos seguintes tipos em definições de tabela de chave alternativas:
Tipo de coluna Nome de Exibição DecimalAttributeMetadata Número Decimal IntegerAttributeMetadata Número Inteiro StringAttributeMetadata Linha única de texto DateTimeAttributeMetadata Data e Hora LookupAttributeMetadata Buscar PicklistAttributeMetadata Conjunto de opções Os atributos não devem ter a segurança em nível de campo aplicada
Tamanho de chave válido
Quando você cria uma chave, o sistema valida a chave, incluindo que o tamanho total da chave não viola restrições de índice baseadas em SQL, como 900 bytes por chave e 16 colunas por chave. Se o tamanho da chave não atender às restrições, uma mensagem de erro será exibida.
Número máximo de definições de tabela de chave secundária para uma tabela
Uma tabela em uma instância do Dataverse pode ter até dez definições de tabela de chave alternativas.
Caracteres Unicode no valor da chave
Se os dados em uma coluna usada em uma chave alternativa contiverem um dos seguintes caracteres
/,<,>,*,%,&,:,\\,?,+, então as ações de recuperação (GET), atualização ou upsert (PATCH) não funcionarão. Se você precisar apenas de exclusividade, essa abordagem funcionará, mas se você precisar usar essas chaves como parte da integração de dados, é melhor criar a chave em colunas que não têm dados com esses caracteres.Não há suporte em tabelas virtuais
Não há suporte para chaves alternativas em tabelas virtuais porque o sistema não pode impor exclusividade quando os dados estão em outro sistema. Para obter mais informações, consulte Introdução às tabelas virtuais (entidades).
Recuperar e excluir chaves alternativas
Para recuperar ou excluir chaves alternativas, use a interface do usuário de personalização. Você não precisa escrever nenhum código. No entanto, o SDK fornece as duas seguintes mensagens para recuperar e excluir chaves alternativas programaticamente:
| Classe de solicitação de mensagem | Descrição |
|---|---|
| RetrieveEntityKeyRequest | Recupera a chave alternativa especificada. |
| DeleteEntityKeyRequest | Exclui a chave alternativa especificada. |
Para recuperar todas as chaves de uma tabela, use a Keys propriedade de EntityMetadata (EntityMetadata EntityType ou EntityMetadata classe). Ele obtém uma matriz de chaves para uma tabela.
Use essa consulta de API Web para exibir todas as tabelas e ver quais têm chaves alternativas:
GET [Organization URI]/api/data/v9.2/EntityDefinitions?$select=SchemaName&$expand=Keys($select=KeyAttributes)
Alguns exemplos retornados por esta solicitação:
{
"SchemaName": "Account",
"MetadataId": "70816501-edb9-4740-a16c-6a5efbc05d84",
"Keys": [
{
"KeyAttributes": [
"accountnumber"
],
"MetadataId": "1dc7b1d2-6beb-ec11-bb3d-0022482ea769"
}
]
},
{
"SchemaName": "example_Table",
"MetadataId": "8f521e41-8934-ec11-b6e6-002248242f3b",
"Keys": [
{
"KeyAttributes": [
"example_key1",
"example_key2"
],
"MetadataId": "2f16d0c6-88ea-ec11-bb3d-0022482ea769"
}
]
}
Monitorar a criação de índice para chaves alternativas
As chaves alternativas usam índices de banco de dados para impor a exclusividade e otimizar o desempenho da pesquisa. Se uma tabela tiver muitos registros existentes, a criação de um índice poderá levar muito tempo. Para tornar a interface do usuário de personalização e a importação de solução mais responsivas, crie o índice em um processo em segundo plano. A EntityKeyMetadata.AsyncJob propriedade (EntityKeyMetadata EntityType ou EntityKeyMetadata) refere-se ao trabalho assíncrono que cria o índice. A propriedade EntityKeyMetadata.EntityKeyIndexStatus especifica o status da chave à medida que seu trabalho de criação de índice progride. O status pode ser qualquer um dos seguintes valores:
- Pendente
- Em Andamento
- Ativo
- Falha
Quando você cria uma chave alternativa usando a API e a criação do índice falha, você pode exibir detalhes sobre a causa da falha, corrigir os problemas e reativar a solicitação de chave usando a ReactivateEntityKey (Ação ReactivateEntityKey ou mensagem ReactivateEntityKeyRequest).
Se você excluir a chave alternativa enquanto um trabalho de criação de índice ainda estiver pendente ou em andamento, o trabalho será cancelado e o índice será excluído.
Consulte também
Usar uma chave alternativa para fazer referência a um registro
Use o controle de alterações para sincronizar dados com sistemas externos
Usar o Upsert para inserir ou atualizar um registro
Definir chaves alternativas para referenciar registros