Trabajar con claves alternativas
Todas las filas de tablas Microsoft Dataverse tienen identificadores únicos definidos como GUID. Estas con la clave principal de cada tabla. Si necesita integrarse con un almacén de datos externos, es posible que pueda agregar una columna a las tablas de base de datos externas para incluir una referencia al identificador único de Dataverse. Esto permite tener una referencia local para vincular a la fila de Dataverse. Sin embargo, a veces no puede modificar la base de datos externa. Con claves alternativas, ahora puede definir una columna en una tabla de Dataverse, para que corresponda a un identificador único (o una combinación única de columnas) usado por el almacén de datos externos. 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, vea Definir claves alternativas utilizando Power Apps.
Para definir claves alternativas mediante programación, primero tiene que crear un tipo de objeto EntityKeyMetadata (o EntityKeyMetadata EntityType si trabaja con la API web). Esta clase contiene las columnas clave. Una vez que se establecen las columnas clave, puede usar CreateEntityKey
para crear las claves para una tabla. Este mensaje toma el nombre de la tabla y los valores de EntityKeyMetadata
como entrada para crear la clave.
Debe conocer las siguientes restricciones al crear claves alternativas:
Columnas válidas en definiciones de tabla 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 Búsqueda PicklistAttributeMetadata Conjunto de opciones Tamaño de clave válido
Cuando se crea una clave, el sistema valida que la plataforma puede admitir la clave, incluido que el tamaño total de la clave no infringe 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 las restricciones, un mensaje de error se mostrará.
Número máximo de definiciones de tabla clave alternativa para una tabla
Puede haber un máximo de diez definiciones de tabla clave alternativa para una entidad en una instancia de Dataverse.
Caracteres Unicode en valor de clave
Si los datos de una columna que se usa en una clave alternativa contienen uno de los caracteres siguientes
/
,<
,>
,*
,%
,&
,:
,\\
,?
,+
, las acciones de recuperar (GET
), actualizar o upsert (PATCH
) no funcionarán. Si solo necesita unicidad, este método funciona, pero si necesita usar estas claves como parte de la integración de datos, entonces es mejor crear la clave en las columnas que no tendrán datos con esos caracteres.No se admite en tablas virtuales
Las claves alternativas no son compatibles con las tablas virtuales porque no podemos imponer la exclusividad cuando los datos están en otro sistema. Más información: Introducción a las 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 para una tabla, use la propiedad Keys de EntityMetadata
(clase EntityMetadata EntityType 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
(EntityKeyMetadata 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 ReactivateEntityKey Action 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
Usar una clave alternativa para hacer referencia a un registro
Uso del seguimiento de cambios para sincronizar los datos con sistemas externos
Use Upsert para insertar o actualizar un registro
Definir claves alternativas para hacer referencia a registros
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).
Comentarios
https://aka.ms/ContentUserFeedback.
Proximamente: Ao longo de 2024, retiraremos gradualmente GitHub Issues como mecanismo de comentarios sobre o contido e substituirémolo por un novo sistema de comentarios. Para obter máis información, consulte:Enviar e ver os comentarios