Partilhar via


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

CanBeReferenced Action

Verifique se a entidade especificada pode ser a entidade primária (um) em um relacionamento um-para-muitos.

CanBeReferencing Action

Verifique se a entidade especificada pode ser a entidade de referência (muitos) em um relacionamento um-para-muitos.

CanManyToMany Action

Verifique se a entidade pode participar de um relacionamento muitos-para-muitos.

GetValidManyToMany Function

Retorna o conjunto de entidades que podem em um relacionamento muitos-para-muitos.

GetValidReferencedEntities Function

Retorna o conjunto de entidades válidas como a entidade primária (um) da entidade especificada em um relacionamento um-para-muitos.

GetValidReferencingEntities Function

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