Criar e atualizar relacionamentos de entidade usando API da Web
Publicado: janeiro de 2017
Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Como a API da Web trabalha com relação aos metadados. Conceitos descritos naPersonalizar metadados do relacionamento entre entidades também se aplica à API da Web.
Neste tópico
Elegibilidade de relacionamento
Criar um relacionamento um-para-muitos
Criar um relacionamento muitos-para-muitos
Atualizar relacionamentos
Excluir Relacionamentos
Elegibilidade de relacionamento
Antes de criar um relacionamento entre entidades, você deve confirmar se as entidades estão elegíveis para participar do relacionamento. Usar ações listadas na tabela a seguir para determinar a aptidão. Essas ações são iguais às mensagens de serviço descritas na organização Elegibilidade de relacionamento da entidade.
Ação |
Descrição |
---|---|
Verifique se a entidade especificada pode ser a entidade primária (um) em um relacionamento um-para-muitos. |
|
Verifique se a entidade especificada pode ser a entidade de referência (muitos) em um relacionamento um-para-muitos. |
|
Verifique se a entidade pode participar de um relacionamento muitos-para-muitos. |
|
Retorna o conjunto de entidades que podem em um relacionamento muitos-para-muitos. |
|
Retorna o conjunto de entidades válidas como a entidade primária (um) da entidade especificada em um relacionamento um-para-muitos. |
|
Retorna o conjunto de entidades válidas como a entidade relacionada (muito) para a entidade especificada em um relacionamento um-para-muitos. |
Criar um relacionamento um-para-muitos
Quando você cria um relacionamento um para muitos, você o define usandoOneToManyRelationshipMetadata EntityType. Essa definição inclui o atributo de busca, que é definido usando LookupAttributeMetadata EntityType e também requer propriedades complexas usando AssociatedMenuConfiguration ComplexType, CascadeConfiguration ComplexType, Label ComplexType e LocalizedLabel ComplexType. O atributo de busca é definido para propriedade de navegação de valor único de Lookup do objeto OneToManyRelationshipMetadata e cria no mesmo tempo usando inserção profunda.Para obter mais informações:Criar entidades relacionadas em uma operação e Relacionamentos um-para-muitos
Se quiser aplicar um nome da propriedade de navegação personalizado para um relacionamento um-para-muitos você pode configurar valores para ReferencingEntityNavigationPropertyName e as propriedades ReferencedEntityNavigationPropertyName.
Após gerar o JSON necessário para definir o relacionamento e o atributo de busca, POST o JSON para o grupo de entidade RelationshipDefinitions. Você precisa incluir o valor de propriedade de @odata.type de Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata para esclarecer o tipo de relacionamento que você está criando como o mesmo conjunto de entidade são usados para criar relações muitos-para-muitos. O uri para o resultado de relacionamento será retornado em resposta.
Solicitação
POST cc_WebAPI_ServiceURI/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: cc_WebAPI_ServiceURI/RelationshipDefinitions(d475020f-5d7c-e511-80d2-00155d2a68d2)
Criar um relacionamento muitos-para-muitos
Quando você cria um relacionamento muitos para muitos, você deve definir o relacionamento usando o ManyToManyRelationshipMetadata EntityType. Essa definição inclui o nome de entidade cruzada para criação assim como o relacionamento deve ser exibido no aplicativo usando AssociatedMenuConfiguration ComplexType, Label ComplexType e LocalizedLabel ComplexType.Para obter mais informações:Relacionamento muitos-para-muitos
Se quiser aplicar um nome da propriedade de navegação personalizado para um relacionamento muitos-para-muitos você pode configurar valores para Entity1NavigationPropertyName e as propriedades Entity2NavigationPropertyName.
Após gerar o JSON necessário para definir o relacionamento, POST o JSON para o grupo de entidade RelationshipDefinitions. Você precisa incluir o valor de propriedade de @odata.type de Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata para esclarecer o tipo de relacionamento que você está criando como o mesmo conjunto de entidade são usados para criar relações um-para-muitos. O uri para o resultado de relacionamento será retornado em resposta.
Solicitação
POST cc_WebAPI_ServiceURI/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: cc_WebAPI_ServiceURI/RelationshipDefinitions(420245fa-c77c-e511-80d2-00155d2a68d2)
Atualizar relacionamentos
Conforme discutido em Entidades atualizadas, você atualiza os relacionamentos usando o método HTTP PUT para substituir a definição existente com alterações que deseja aplicar. Não é possível editar propriedades individuais usando o método HTTP PATCH de como lidar com entidades corporativas de dados. Assim como com as entidades e atributos, você deve incluir um cabeçalho MSCRM.MergeLabels com um valor definido para true para evitar substituir rótulos localizados não incluídos em sua atualização, deve publicar personalizações antes de elas estarem ativas no sistema.
Excluir Relacionamentos
Para remover uma relação, usando a API da Web use o método HTTP DELETE URI para o relacionamento.
Confira Também
Personalizar metadados do relacionamento entre entidades
Use o API da Web com metadados do Dynamics 365
Consultar metadados usando a API da Web
Recuperar metadados por nome ou por MetadataId
Criar e atualizar definições de entidade usando API da Web
Microsoft Dynamics 365
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais