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).