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.
A API da Web oferece suporte para trabalhar com definições de relacionamento (metadados). Os conceitos descritos nas Definições de relacionamento de tabela também se aplicam à API Web.
Elegibilidade para relacionamentos
Antes de criar uma relação de tabela (entidade), você deve confirmar se a tabela é elegível para participar da relação. Você pode usar as ações listadas na tabela a seguir para determinar a elegibilidade. Essas ações correspondem às mensagens do SDK do .NET descritas na Elegibilidade do relacionamento de tabela.
| Action | Description |
|---|---|
| Ação CanBeReferenced | Verifica se a entidade especificada pode ser a entidade primária (uma) em uma relação um-para-muitos. |
| Ação CanBeReferencing | Verifica se a entidade especificada pode ser a entidade de referência (muitos) em uma relação um-para-muitos. |
| Ação CanManyToMany | Verifica se a entidade pode participar de uma relação muitos para muitos. |
| Função GetValidManyToMany | Retorna o conjunto de entidades que podem participar de uma relação muitos para muitos. |
| Função GetValidReferencedEntities | Retorna o conjunto de entidades que são válidas como a entidade primária (um) a partir da entidade especificada em uma relação um para muitos. |
| Função GetValidReferencingEntities | Retorna o conjunto de entidades que são válidas como a entidade relacionada (muitos) para a entidade especificada em uma relação um para muitos. |
Criar um relacionamento um para muitos
Ao criar uma relação um-para-muitos, defina-a usando o OneToManyRelationshipMetadata EntityType. Essa definição inclui o atributo de pesquisa, que é definido usando LookupAttributeMetadata EntityType e também requer propriedades complexas usando AssociatedMenuConfiguration ComplexType, CascadeConfiguration ComplexType, Label ComplexType e LocalizedLabel ComplexType. O atributo lookup é definido como a propriedade de navegação lookup de valor único do objeto OneToManyRelationshipMetadata e é criado ao mesmo tempo usando deep insert. Mais informações: Criar linhas de tabela relacionadas em uma operação e metadados de relação tabela
Se você quiser aplicar um nome de propriedade de navegação personalizado para uma relação um-para-muitos, você pode definir valores para as propriedades ReferencedEntityNavigationPropertyName e ReferencingEntityNavigationPropertyName.
Depois de gerar o JSON necessário para definir a relação e o atributo de pesquisa, POST envie o JSON para o RelationshipDefinitions conjunto de entidades. Você deve incluir o valor da propriedade @odata.type de Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata para esclarecer o tipo de relação que você está criando porque esse mesmo conjunto de entidades é usado para criar relações muitos para muitos. O uri da relação resultante é retornado na resposta.
Solicitação:
POST [Organization URI]/api/data/v9.2/RelationshipDefinitions HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"SchemaName": "new_contact_new_bankaccount",
"@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",
"AssociatedMenuConfiguration": {
"Behavior": "UseCollectionName",
"Group": "Details",
"Label": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Bank Accounts",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Bank Accounts",
"LanguageCode": 1033
}
},
"Order": 10000
},
"CascadeConfiguration": {
"Assign": "Cascade",
"Delete": "Cascade",
"Merge": "Cascade",
"Reparent": "Cascade",
"Share": "Cascade",
"Unshare": "Cascade"
},
"ReferencedAttribute": "contactid",
"ReferencedEntity": "contact",
"ReferencingEntity": "new_bankaccount",
"Lookup": {
"AttributeType": "Lookup",
"AttributeTypeName": {
"Value": "LookupType"
},
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "The owner of the account",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "The owner of the account",
"LanguageCode": 1033
}
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account Owner",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account Owner",
"LanguageCode": 1033
}
},
"RequiredLevel": {
"Value": "ApplicationRequired",
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
},
"SchemaName": "new_AccountOwner",
"@odata.type": "Microsoft.Dynamics.CRM.LookupAttributeMetadata"
}
}
Resposta:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/RelationshipDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
Criar um relacionamento muitos-para-muitos
Se você quiser aplicar um nome de propriedade de navegação personalizado para uma relação muitos para muitos, poderá definir valores para as propriedades Entity2NavigationPropertyName e Entity1NavigationPropertyName.
Depois de gerar o JSON necessário para definir a relação, POST envie o JSON para o conjunto de entidades RelationshipDefinitions. Você deve incluir o valor da propriedade @odata.type de Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata para esclarecer o tipo de relação que está criando porque esse mesmo conjunto de entidades é usado para criar relações um para muitos. O URI da relação resultante é retornado na resposta.
Solicitação:
POST [Organization URI]/api/data/v9.2/RelationshipDefinitions HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"SchemaName": "new_accounts_campaigns",
"@odata.type": "Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata",
"Entity1AssociatedMenuConfiguration": {
"Behavior": "UseLabel",
"Group": "Details",
"Label": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Account",
"LanguageCode": 1033
}
},
"Order": 10000
},
"Entity1LogicalName": "account",
"Entity2AssociatedMenuConfiguration": {
"Behavior": "UseLabel",
"Group": "Details",
"Label": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Campaign",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Campaign",
"LanguageCode": 1033
}
},
"Order": 10000
},
"Entity2LogicalName": "campaign",
"IntersectEntityName": "new_accounts_campaigns"
}
Resposta:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/RelationshipDefinitions(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)
Criar relações para dar suporte a uma consulta de várias tabelas
As colunas do tipo pesquisa em várias tabelas permitem que um usuário use uma tabela específica que tenha várias relações um-para-muitos (1:M) com outras tabelas no ambiente. Uma única coluna de tipo de pesquisa pode se referir a várias outras tabelas. Um valor de pesquisa enviado para a coluna de tipo de várias tabelas será associado a um registro em qualquer uma das tabelas relacionadas.
Mais informações: Usar colunas de pesquisa de várias tabelas
Atualizar relações
Conforme discutido em Atualizar definições de tabela, você atualiza os relacionamentos usando o método HTTP PUT para substituir a definição existente pelas alterações que deseja aplicar. Você não pode editar propriedades individuais usando o método HTTP PATCH como você pode com tabelas de dados empresariais. Assim como acontece com entidades e atributos, você deve incluir um MSCRM.MergeLabels cabeçalho com o valor definido para true para evitar a substituição de rótulos localizados não incluídos em sua atualização e você deve publicar personalizações antes que elas estejam ativas no sistema.
Excluir relacionamentos
Para excluir uma relação usando a API Web, use o método HTTP DELETE com o URI para a relação.
Consulte também
Usar a API Web com definições de tabela
Consultar definições de tabela usando a API Web
Recuperar definições de tabela por nome ou MetadataId
Modelar tabelas e colunas usando a API Web
Exemplo de operações de esquema de tabela da API Web
Exemplo de operações de esquema de tabela de API Web (C#)