Compartir a través de


Trabajar con claves alternativas

Todas las filas de la tabla tienen un identificador único formateado como GUID. Microsoft Dataverse Estos identificadores son la clave principal de cada tabla. Cuando necesite integrarse con un almacén de datos externo, es posible que pueda agregar una columna a las tablas de la base de datos externa para que contengan una referencia al identificador único de una fila Dataverse. Sin embargo, a veces no puede modificar la base de datos externa. Con claves alternativas, ahora puede definir una columna en una tabla para que corresponda a un identificador único (o combinación única de columnas) utilizado por el almacén de datos externo. Dataverse Esta clave alternativa se puede usar para identificar una fila en Dataverse en lugar de la clave principal. Debe poder definir qué columnas representan una única identidad para sus filas. Una vez identifique las columnas que son únicas de la tabla, puede declararlas como claves alternativas con la interfaz de usuario de personalización (UI) o en el código. En este tema se proporciona información acerca de la definición de claves alternativas en el modelo de datos.

Crear claves alternativas

Puede crear claves alternativas mediante programación o usando las herramientas de personalizaciones. Para obtener más información sobre el uso de las herramientas de personalización, consulte Definir claves alternativas usando Power Apps.

Para definir claves alternativas mediante programación, primero tiene que crear un tipo de objeto EntityKeyMetadata (o usar EntityKeyMetadata EntityType si trabaja con la API web). Esta clase contiene las columnas clave. Una vez configuradas las columnas clave, puede utilizar CreateEntityKey para crear las claves para una tabla. Este mensaje toma el nombre de la tabla y los valores como entrada para crear la clave. EntityKeyMetadata

Debe conocer las siguientes restricciones al crear claves alternativas:

  • Columnas válidas en las definiciones de tablas clave

    Solo las columnas de los siguientes tipos se pueden incluir en definiciones de tabla alternativas:

    Tipo de columna Nombre
    DecimalAttributeMetadata Número decimal
    IntegerAttributeMetadata Número entero
    StringAttributeMetadata Línea única de texto
    DateTimeAttributeMetadata Fecha y hora
    LookupAttributeMetadata Lookup
    PicklistAttributeMetadata Conjunto de opciones
  • Los atributos no deben tener seguridad a nivel de campo aplicada

  • Tamaño de clave válido

    Cuando se crea una clave, el sistema la valida, incluso si el tamaño total de la clave no viola las restricciones de índice basadas en SQL, como 900 bytes por clave y 16 columnas por clave. Si el tamaño de la clave no cumple con las restricciones, se muestra un mensaje de error.

  • Número máximo de definiciones de tabla clave alternativa para una tabla

    Puede haber un máximo de diez (10) definiciones de tabla clave alternativa para una tabla en una instancia. Dataverse

  • Caracteres Unicode en valor clave

    Si los datos dentro de una columna que se utiliza en un clave alternativa contienen uno de los siguientes caracteres: /,<,>,*,%,&,:,\\,?,+ , las acciones de recuperación (GET), actualización o inserción (PATCH) no funcionarán. Si solo necesita unicidad, entonces este enfoque funciona, pero si necesita usar estas claves como parte de la integración de datos, entonces es mejor crear la clave en columnas que no tendrán datos con esos caracteres.

  • No compatible con tablas virtuales

    Las claves alternativas no se admiten en tablas virtuales porque no podemos imponer unicidad cuando los datos están en otro sistema. Más información: Comience a utilizar tablas virtuales (entidades)

Recuperar y eliminar claves alternativas

Si necesita recuperar o eliminar claves alternativas, puede usar la interfaz de usuario de personalización para ello, sin necesidad de escribir código. Sin embargo, el SDK proporciona los dos mensajes siguientes para recuperar y eliminar claves alternativas mediante programación.

Clase de solicitud de mensajes Descripción
RetrieveEntityKeyRequest Recupera la clave alternativa especificada.
DeleteEntityKeyRequest Elimina la clave alternativa especificada.

Para recuperar todas las claves de una tabla, utilice la propiedad de (clase Keys EntityMetadata EntityType EntityMetadata o ). EntityMetadata Obtiene una matriz de claves para una tabla.

Use esta consulta de API web para ver todas las tablas y ver cuáles tienen claves alternativas:

GET [Organization URI]/api/data/v9.2/EntityDefinitions?$select=SchemaName&$expand=Keys($select=KeyAttributes)

Algunos ejemplos devueltos por esta solicitud:

{
    "SchemaName": "Account",
    "MetadataId": "70816501-edb9-4740-a16c-6a5efbc05d84",
    "Keys": [
        {
            "KeyAttributes": [
                "accountnumber"
            ],
            "MetadataId": "1dc7b1d2-6beb-ec11-bb3d-0022482ea769"
        }
    ]
},
{
    "SchemaName": "example_Table",
    "MetadataId": "8f521e41-8934-ec11-b6e6-002248242f3b",
    "Keys": [
        {
            "KeyAttributes": [
                "example_key1",
                "example_key2"
            ],
            "MetadataId": "2f16d0c6-88ea-ec11-bb3d-0022482ea769"
        }
    ]
}

Supervisar la creación del índice para claves alternativas

Las claves alternativas utilizan índices de base de datos para forzar exclusividad y para optimizar el rendimiento de búsqueda. Si hay muchos registros existentes en una tabla, la creación del índice puede ser un proceso largo. Puede aumentar la capacidad de respuesta de la interfaz de usuario de personalización y la importación de soluciones realizando la creación de índices como un proceso en segundo plano. La propiedad EntityKeyMetadata.AsyncJob (EntityMetadata EntityType o EntityKeyMetadata) hace referencia a los trabajos asincrónicos que realiza la creación de índice. La propiedad EntityKeyMetadata.EntityKeyIndexStatus especifica el estado de la clave mientras progresa su trabajo de creación de índice. El estado podría ser cualquiera de los siguientes:

  • Pendiente
  • En curso
  • Activo
  • Incorrecto

Cuando se crea una clave alternativa con la API, si se produce un error en la creación del índice, puede analizar los detalles sobre la causa del error, corregir los problemas y reactivar la solicitud de clave con ReactivateEntityKey (mensaje Acción ReactivateEntityKey o ReactivateEntityKeyRequest).

Si se elimina la clave alternativa mientras un trabajo de creación de índice sigue pendiente o en progreso, el trabajo se cancela y se elimina el índice.

Consulte también

Utilice un clave alternativa para hacer referencia a un registro
Utilice el seguimiento de cambios para sincronizar datos con sistemas externos
Utilice Upsert para insertar o actualizar un registro
Definir claves alternativas para hacer referencia a registros