Compartir por


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
Preferir: odata.include-annotations="*"

[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#)