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 |
---|---|
Comprueba si la entidad especificada puede ser la entidad principal (uno) en una relación de uno a varios. |
|
Comprueba si la entidad especificada puede ser la entidad de referencia (varios) en una relación de uno a varios. |
|
Comprueba si la entidad puede participar en una relación de varios a varios. |
|
Devuelve el conjunto de entidades que pueden participar en una relación de varios a varios. |
|
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. |
|
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