Crear y actualizar relaciones de tabla mediante la API web

La API web admite trabajar con definiciones de relaciones (metadatos). Los conceptos descritos en Definiciones de relación de tabla también se aplican a la API web.

Idoneidad para relaciones

Antes de crear una tabla (entidad) entre entidades, debe comprobar si la tabla 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 SDK para .NET descritos en Elegibilidad de relación de tabla.

Acción 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 filas de tablas relacionadas en una sola operación y Metadatos de relación de tablas

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 haya 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 la propiedad @odata.type de Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata para aclarar el tipo de relación que está creando porque este mismo conjunto de entidades se usa para crear relaciones de varios a varios. El uri para la relación resultante se devuelve en la respuesta.

Solicitud:

POST [Organization URI]/api/data/v9.2/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: [Organization URI]/api/data/v9.2/RelationshipDefinitions(d475020f-5d7c-e511-80d2-00155d2a68d2)  

Crear nueva relación 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 haya generado el JSON necesario para definir la relación, POST el JSON en el conjunto de entidades RelationshipDefinitions. Debe incluir el valor de la propiedad @odata.type de Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata para aclarar el tipo de relación que está creando porque este mismo conjunto de entidades se usa para crear relaciones de uno a varios. El URI de la relación resultante se devuelve en la respuesta.

Solicitud:

POST [Organization URI]/api/data/v9.2/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: [Organization URI]/api/data/v9.2/RelationshipDefinitions(420245fa-c77c-e511-80d2-00155d2a68d2)    

Cree Relaciones para admitir una búsqueda de varias tablas

Las columnas de tipo de búsqueda de varias tablas permiten al usuario utilizar una tabla específica que tiene varias tablas de relaciones uno a varios (1:M) en otras tablas del entorno. Una sola columna de tipo de búsqueda puede hacer referencia a otras tablas. Un valor de búsqueda enviado a la columna de tipo de tabla múltiple se comparará con un registro en cualquiera de las tablas relacionadas.

Más información: Utilice columnas de búsqueda de varias tablas

Actualizar relaciones

Como se discutió en Actualizar definiciones de tabla, puede actualizar relaciones usando el método HTTP PUT para reemplazar la definición existente con los cambios que desea aplicar. No puede editar propiedades individuales utilizando el método HTTP PATCH tal como se puede hacer con las tablas de datos comerciales. 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.

Consultar también

Utilizar la API web con definiciones de tabla
Consultar definiciones de tabla con la API web
Recuperar definiciones de tablas por nombre o MetadataId
Modelar tablas y columnas usando la API web
Ejemplo de operaciones de esquema de tabla de API web
Ejemplo de operaciones de esquema de tabla de API web (C#)

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).