Crear y actualizar relaciones de entidad mediante la API web

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

La API web admite trabajar con metadatos de relación. Los conceptos descritos en Personalizar metadatos de relación de entidad también se aplican a la API web.

En este tema

Idoneidad para relaciones

Crear nueva relación de uno a varios

Crear nueva relación de varios a varios

Actualizar relaciones

Eliminar relaciones

Idoneidad para relaciones

Antes de crear una relación entre entidades, debe comprobar si la entidad puede participar en la relación. Puede usar los acciones que aparecen en la siguiente tabla para determinar su idoneidad. Estas acciones corresponden a los mensajes de servicio de la organización descritos en Idoneidad de la relación entre entidades.

Para

Descripción

CanBeReferenced Action

Comprueba si la entidad especificada puede ser la entidad principal (uno) en una relación de uno a varios.

CanBeReferencing Action

Comprueba si la entidad especificada puede ser la entidad de referencia (varios) en una relación de uno a varios.

CanManyToMany Action

Comprueba si la entidad puede participar en una relación de varios a varios.

GetValidManyToMany Function

Devuelve el conjunto de entidades que pueden participar en una relación de varios a varios.

GetValidReferencedEntities Function

Devuelve el conjunto de entidades que son válidas como entidad principal (uno) de la entidad especificada en una relación de uno a varios.

GetValidReferencingEntities Function

Devuelve el conjunto de entidades que son válidas como la entidad relacionada (varias) de la entidad especificada en una relación uno a varios.

Crear nueva relación de uno a varios

Al crear una relación de uno a varios, la define medianteOneToManyRelationshipMetadata EntityType el. Esta definición incluye el atributo de búsqueda, que se define utilizando LookupAttributeMetadata EntityType y también requiere propiedades complejas utilizando AssociatedMenuConfiguration ComplexType, CascadeConfiguration ComplexType, Label ComplexType y LocalizedLabel ComplexType. El atributo de búsqueda se establece como la propiedad de navegación de un solo valor Lookup del objeto OneToManyRelationshipMetadata y se crea a la vez mediante inserción profunda.Más información:Crear entidades relacionadas en una operación y Relaciones de uno a varios

Si desea aplicar un nombre de propiedad de navegación personalizado para una relación de uno a varios puede establecer valores para las propiedades ReferencingEntityNavigationPropertyName y ReferencedEntityNavigationPropertyName.

Una vez que ha generado el JSON necesario para definir la relación y el atributo de búsqueda, POST el JSON en el conjunto de entidades RelationshipDefinitions. Debe incluir el valor de propiedad @odata.type de Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata para aclarar el tipo de relación que está creando porque este mismo conjunto de entidad sirve para crear relaciones de varios a varios. El uri para la relación resultante se devuelve en la respuesta.

  • Solicitud

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

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

Crear nueva relación de varios a varios

Al crear una relación de varios a varios, debe establecer la relación utilizando el ManyToManyRelationshipMetadata EntityType. Esta definición incluye el nombre de la entidad de intersección que se creará así como la forma en que la relación debería mostrarse en la aplicación utilizando AssociatedMenuConfiguration ComplexType, Label ComplexType y LocalizedLabel ComplexType.Más información:Relaciones de varios a varios

Si desea aplicar un nombre de propiedad de navegación personalizado para una relación de varios a varios puede establecer valores para las propiedades Entity1NavigationPropertyName y Entity2NavigationPropertyName.

Una vez que ha generado el JSON necesario para definir la relación, POST el JSON en el conjunto de entidades RelationshipDefinitions. Debe incluir el valor de propiedad @odata.type de Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata para aclarar el tipo de relación que está creando porque este mismo conjunto de entidad sirve para crear relaciones de uno a varios. El uri para la relación resultante se devuelve en la respuesta.

  • Solicitud

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

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

Actualizar relaciones

Como se explica en Actualizar entidades, actualice relaciones mediante el método HTTP PUT para reemplazar la definición existente con los cambios que desee aplicar. No puede editar propiedades individuales mediante el método HTTP PATCH como con entidades de datos de negocio. Como ocurre con entidades y atributos, debe incluir un encabezado MSCRM.MergeLabels con el valor establecido como true para evitar sobrescribir etiquetas localizadas no incluidas en la actualización y debe publicar personalizaciones antes de que estén activas en el sistema.

Eliminar relaciones

Para eliminar una relación mediante web API, use el método HTTP DELETE con el identificador uniforme de recursos para la relación.

Ver también

Personalizar metadatos de relación de entidad
Usar la API web con metadatos de Dynamics 365
Consulta de metadatos utilizando la API web
Recuperar metadatos por nombre o identificador de metadatos
Crear y actualizar definiciones de entidad mediante la API web

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright