Búsquedas en 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:N) 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 compara con un registro en cualquiera de las tablas relacionadas. Las búsquedas de tablas múltiples se pueden crear con tablas locales y tablas virtuales como tablas referenciadas.
Los tipos de tablas múltiples están integrados actualmente en Microsoft Dataverse como tipos estáticos como Cliente, que se conecta a Cuenta y Contacto. Esta nueva característica ofrece a los usuarios el poder de definir cualquier otra búsqueda de múltiples tablas que puedan necesitar.
Nota
En este momento, los usuarios pueden crear y modificar búsquedas personalizadas de múltiples tablas a través del SDK o las API web. La compatibilidad con la interfaz de usuario interactiva vendrá en una versión futura.
Ejemplos
Supongamos que aloja medios para usuarios en una biblioteca. Tiene muchos MediaObjects diferentes, muchos de ellos tienen el mismo nombre, pero están en diferentes formatos, como Books, Audio y Video. La creación de una búsqueda de varias tablas llamada new_Media
que tiene 1: N Relaciones a new_Books
, new_Audio
, y new_Video
da como resultado una tabla de búsqueda new_Media
que proporciona identificaciones rápidas de registros almacenados en tablas específicas.
Tabla de búsqueda new_Media
PrimaryID | PrimaryName | RelatedID | Related Name |
---|---|---|---|
<media1> | MediaObjectOne |
<books1> | Content1 |
<media2> | MediaObjectTwo |
<audio1> | Content1 |
<media3> | MediaObjectThree |
<video1> | Content3 |
<media4> | MediaObjectFour |
<audio2> | Content3 |
tabla new_Books
PrimaryID | PrimaryName | CallNumber |
---|---|---|
<books1> | Content1 |
1ww-3452 |
<books2> | Content2 |
a4e-87hw |
Tabla new_Audio
PrimaryID | PrimaryName | AudioFormat |
---|---|---|
<audio1> | Content1 |
mp4 |
<audio2> | Content3 |
wma |
Tabla new_Video
PrimaryID | PrimaryName | VideoFormat |
---|---|---|
<video1> | Content3 |
wmv |
<video2> | Content2 |
avi |
La búsqueda de medios puede devolver registros en todas las tablas en la búsqueda polimórfica.
Una búsqueda en medios con el nombre
Content1
recuperaría registros de <books1> y <audio1>Una búsqueda en medios de
Content3
recuperaría registros de <audio2> y <video1>
Ejemplo de API web
La siguiente solicitud HTTP POST
crea un atributo de búsqueda polimórfico.
Solicitar
POST [Organization URI]/api/data/v9.2/CreatePolymorphicLookupAttribute HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"OneToManyRelationships": [
{
"SchemaName": "new_media_new_book",
"ReferencedEntity": "new_book",
"ReferencingEntity": "new_media"
},
{
"SchemaName": "new_media_new_video",
"ReferencedEntity": "new_video",
"ReferencingEntity": "new_media"
},
{
"SchemaName": "new_media_new_audio",
"ReferencedEntity": "new_audio",
"ReferencingEntity": "new_media",
"CascadeConfiguration": {
"Assign": "NoCascade",
"Delete": "RemoveLink",
"Merge": "NoCascade",
"Reparent": "NoCascade",
"Share": "NoCascade",
"Unshare": "NoCascade"
}
}
],
"Lookup": {
"AttributeType": "Lookup",
"AttributeTypeName": {
"Value": "LookupType"
},
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Media Polymorphic Lookup",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": " Media Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "MediaPolymorphicLookup",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "MediaPolymorphicLookup",
"LanguageCode": 1033
}
},
"SchemaName": "new_mediaPolymporphicLookup",
"@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata"
}
}
El siguiente JSON es el cuerpo de la respuesta de la solicitud HTTP POST
y contiene el id. del atributo polimórfico y todas las relaciones creadas.
{
"@odata.context":
"http://<organization URL>/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.CreatePolymorphicLookupAttributeResponse",
"RelationshipIds":[
"77d4c6e9-0397-eb11-a81c-000d3a6cfaba",
"7ed4c6e9-0397-eb11-a81c-000d3a6cfaba",
"85d4c6e9-0397-eb11-a81c-000d3a6cfaba"
],
"AttributeId":"d378dd3e-42f4-4bd7-95c7-0ee546c7de40"
}
Utilice las API de búsqueda de varias tablas
La siguiente tabla enumera las operaciones relevantes para las definiciones de tabla y atributo.
Operación (method) |
Descripción | Formato de URL |
---|---|---|
Create (POST) |
Nueva API | [OrganizationUrl]/api/data/v9.2 /CreatePolymorphicLookupAttribute |
Atributo Recuperar (GET) |
API existentes | [OrganizationUrl]/api/data/v9.2 /EntityDefinitions(<EntityId>)/Attributes(<AttributeId>) |
Relación Recuperar (GET) |
API existentes | [OrganizationUrl]/api/data/v9.2 /RelationshipDefinitions(<RelationshipId>) |
Agregar relación (POST) |
Agregar una relación a una existente búsqueda polimórfica atributo |
[OrganizationUrl]/api/data/v9.2 /RelationshipDefinitions |
Relación Quitar (DELETE) |
API existentes | [OrganizationUrl]/api/data/v9.2 /RelationshipDefinitions(<RelationshipId>) |
Quitar atributo (DELETE) |
API existentes | [OrganizationUrl]/api/data/v9.2 /EntityDefinitions(<EntityId>)/Attributes(<AttributeId>) |
La siguiente tabla enumera las operaciones relevantes para los datos de tabla y atributo.
Operación (método) |
Descripción | Formato de URL |
---|---|---|
Crear (POST) |
Consulte el siguiente ejemplo new_checkouts |
[OrganizationUrl]/api/data/v9.2 /<entitysetName> |
Recuperar (GET) |
Agregue el siguiente encabezado para obtener anotaciones: Tipo de contenido: aplicación/json |
[OrganizationUrl]/api/data/v9.2 /<entitysetName>(<recordId>) |
El ejemplo a continuación se muestra una solicitud de ejemplo que crea un nuevo registro con dos filas.
POST [OrganizationUrl]/api/data/v9.1/new_checkouts
{
"new_name": "c1",
new_CheckedoutItem_new_book@odata.bind: "/new_books(387a2c9b-ecc6-ea11-a81e-000d3af68bd7)"
}
{
"new_name": "c2",
new_CheckedoutItem_new_device@odata.bind: "/new_devices(6472e7ba-ecc6-ea11-a81e-000d3af68bd7)"
}
Crear búsqueda polimórfica (ejemplo de carga)
POST [OrganizationUrl]/api/data/v9.2/CreatePolymorphicLookupAttribute
{
"OneToManyRelationships": [
{
"SchemaName": "new_checkout_poly_new_book",
"ReferencedEntity": "new_book",
"ReferencingEntity": "new_checkout"
},
{
"SchemaName": "new_checkout_poly_new_device",
"ReferencedEntity": "new_device",
"ReferencingEntity": "new_checkout"
},
{
"SchemaName": "new_checkout_poly_new_dvd",
"ReferencedEntity": "new_dvd",
"ReferencingEntity": "new_checkout",
"CascadeConfiguration": {
"Assign": "NoCascade",
"Delete": "RemoveLink",
"Merge": "NoCascade",
"Reparent": "NoCascade",
"Share": "NoCascade",
"Unshare": "NoCascade"
}
}
],
"Lookup": {
"AttributeType": "Lookup",
"AttributeTypeName": {
"Value": "LookupType"
},
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkouted item Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkedout item Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkedout item",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkedout item",
"LanguageCode": 1033
}
},
"SchemaName": "new_CheckedoutItem",
"@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata"
}
}
Agregar relación a la búsqueda polimórfica existente (ejemplo de carga)
POST [OrganizationUrl]/api/data/v9.2/RelationshipDefinitions
{
"SchemaName": "new_checkout_poly_new_researchresource",
"@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",
"CascadeConfiguration": {
"Assign": "NoCascade",
"Delete": "RemoveLink",
"Merge": "NoCascade",
"Reparent": "NoCascade",
"Share": "NoCascade",
"Unshare": "NoCascade"
},
"ReferencedEntity": "new_researchresource",
"ReferencingEntity": "new_checkout",
"Lookup": {
"AttributeType": "Lookup",
"AttributeTypeName": { "Value": "LookupType" },
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkout Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkout Polymorphic Lookup Attribute",
"LanguageCode": 1033
}
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkout item",
"LanguageCode": 1033
}
],
"UserLocalizedLabel": {
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Checkout item",
"LanguageCode": 1033
}
},
"SchemaName": "new_CheckedoutItem",
"@odata.type": "Microsoft.Dynamics.CRM.LookupAttributeMetadata"
}
}
Consulte también
Utilizar la API web con definiciones de tabla
Crear y actualizar relaciones de tablas
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#)