Condividi tramite


Creare e aggiornare relazioni di entità tramite l'API Web

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

L'API Web supporta l'utilizzo di metadati di relazione. I concetti descritti in Personalizzare i metadati delle relazioni di entità vengono applicati all'API Web.

In questo argomento

Idoneità delle relazioni

Crea una relazione uno a molti

Crea una relazione molti a molti

Aggiornare le relazioni

Eliminare le relazioni

Idoneità delle relazioni

Prima di creare una relazione di entità è necessario verificare se l'entità è idonea per partecipare alla relazione. Puoi utilizzare le azioni elencate nella tabella seguente per determinare l'idoneità. Queste azioni corrispondono ai messaggi di servizio dell'organizzazione descritti in Idoneità delle relazioni di entità.

Azione

Descrizione

CanBeReferenced Action

Verifica se l'entità specificata può essere l'entità primaria (una) in una relazione uno-a-molti.

CanBeReferencing Action

Verifica se l'entità specificata può essere l'entità di riferimento (molti) in una relazione uno-a-molti.

CanManyToMany Action

Verifica se l'entità può partecipare a una relazione molti-a-molti.

GetValidManyToMany Function

Restituisce il set di entità che può partecipare a una relazione molti-a-molti.

GetValidReferencedEntities Function

Restituisce il set di entità valide come l'entità primaria (una) dall'entità specificata in una relazione uno-a-molti.

GetValidReferencingEntities Function

Restituisce il set di entità valide come l'entità correlata (molti) all'entità specificata in una relazione uno-a-molti.

Crea una relazione uno a molti

Quando crei una relazione uno-a-molti, definisci la relazione utilizzando OneToManyRelationshipMetadata EntityType. La definizione contiene un attributo di tipo lookup, che viene definito utilizzando LookupAttributeMetadata EntityType e richiede anche le proprietà complesse tramite AssociatedMenuConfiguration ComplexType, CascadeConfiguration ComplexType, Label ComplexType e LocalizedLabel ComplexType. L'attributo di tipo lookup è impostato sulla proprietà di navigazione a valore singolo di tipo Lookup dell'oggetto OneToManyRelationshipMetadata e viene creato contemporaneamente tramite inserimento deep.Ulteriori informazioni:Creare entità correlate con un'unica operazione e Relazioni uno-a-molti

Se desideri applicare un nome di proprietà di navigazione personalizzato per una relazione uno-a-molti puoi impostare i valori per le proprietà ReferencingEntityNavigationPropertyName e ReferencedEntityNavigationPropertyName.

Dopo aver generato l'elemento JSON necessario per definire la relazione e l'attributo di tipo lookup, eseguire il POST di JSON nel set di entità RelationshipDefinitions. Devi includere il valore di proprietà @odata.type di Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata per chiarire il tipo di relazione che stai creando perché lo stesso set di entità viene utilizzato per creare relazioni molti a molti. L'URI per la relazione risultante viene restituito nella risposta.

  • Richiesta

    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"
     }
    }
    
  • Risposta

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: cc_WebAPI_ServiceURI/RelationshipDefinitions(d475020f-5d7c-e511-80d2-00155d2a68d2)
    

Crea una relazione molti a molti

Quando crei una relazione molti-a-molti, devi definire la relazione utilizzando ManyToManyRelationshipMetadata EntityType. La definizione include il nome di un'entità di intersezione da creare nonché come la relazione deve essere visualizzata nell'applicazione tramite AssociatedMenuConfiguration ComplexType, Label ComplexType e LocalizedLabel ComplexType.Ulteriori informazioni:Relazioni molti-a-molti

Se desideri applicare un nome di proprietà di navigazione personalizzato per una relazione molti-a-molti puoi impostare i valori per le proprietà Entity1NavigationPropertyName e Entity2NavigationPropertyName.

Dopo aver generato l'elemento JSON necessario per definire la relazione, eseguire il POST di JSON nel set di entità RelationshipDefinitions. Devi includere il valore di proprietà @odata.type di Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata per chiarire il tipo di relazione che stai creando perché lo stesso set di entità viene utilizzato per creare relazioni uno a molti. L'URI per la relazione risultante viene restituito nella risposta.

  • Richiesta

    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"
    }
    
  • Risposta

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: cc_WebAPI_ServiceURI/RelationshipDefinitions(420245fa-c77c-e511-80d2-00155d2a68d2)
    

Aggiornare le relazioni

Come illustrato in Aggiornare entità, aggiorni le relazioni utilizzando il metodo HTTP PUT per sostituire la definizione esistente con le modifiche che vuoi applicare. Non puoi modificare le singole proprietà utilizzando il metodo HTTP PATCH come per le entità di dati aziendali. Come per entità e attributi, devi includere un'intestazione MSCRM.MergeLabels con il valore impostato su true per evitare di sovrascrivere le etichette localizzate non incluse nell'aggiornamento e devi pubblicare le personalizzazioni prima che diventino attive nel sistema.

Eliminare le relazioni

Per eliminare una relazione utilizzando l'API Web, utilizza il metodo HTTP DELETE con l'URI per la relazione.

Vedere anche

Personalizzare i metadati delle relazioni di entità
Utilizzare l'API Web con i metadati di Dynamics 365
Query sui metadati tramite la Web API
Recuperare i metadati per nome o MetadataId
Creare e aggiornare definizioni di entità tramite la Web API

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright