Definiciones de tabla en Microsoft Dataverse

Las definiciones de tabla de Microsoft Dataverse describen la estructura y el comportamiento de cada tabla que almacena datos estructurados. En este artículo se explica cómo trabajar con definiciones de tabla mediante programación, incluidos los nombres de tabla, las claves, la propiedad y los estados. Para los desarrolladores, las tablas corresponden a las clases que se usan al trabajar con datos en Microsoft Dataverse.

La clase EntityMetadata del SDK para .NET y el tipo de entidad EntityMetadata de la API web contienen las propiedades que definen las tablas.

Nota:

Al recuperar definiciones de tabla mediante la API web, los datos de la respuesta usan el tipo complejo ComplexEntityMetadata. La diferencia es que Attributes, Keys, ManyToManyRelationships, ManyToOneRelationships y OneToManyRelationships son colecciones (arrays) en lugar de propiedades de navegación con valores de colección. Use el tipo de entidad EntityMetadata al crear o actualizar tablas mediante API web.

Nombres de tabla

Cada tabla tiene un nombre único que se define al crearla. Verá este nombre de varias maneras:

Nombre de propiedad Descripción Example
SchemaName Normalmente, una versión en PascalCase del nombre lógico. Account
CollectionSchemaName Forma plural del nombre del esquema. Accounts
LogicalName Todas las versiones en minúscula del nombre de esquema. account
LogicalCollectionName Todas las versiones en minúscula del nombre de esquema de la colección. accounts
EntitySetName Se usa para identificar colecciones con la API web. De forma predeterminada, es igual que el nombre de la colección lógica.
Puede cambiar el nombre del conjunto de entidades actualizando mediante programación la definición de la tabla. Realice este cambio solo antes de escribir cualquier código de API web para la tabla. Para obtener más información, consulte Nombre del conjunto de entidades.
accounts

Nota:

Al crear una tabla personalizada con código, debe anteponer el prefijo de personalización del editor de soluciones al nombre SchemaName. Dataverse no comprueba que es el prefijo de personalización correcto, solo que tiene un prefijo de personalización. Asegúrese de usar el prefijo correcto porque no puede cambiarlo más adelante.

Los valores CollectionSchemaName, LogicalName, LogicalCollectionName y EntitySetName se generan utilizando el valor SchemaName.

Cada tabla también tiene tres propiedades que pueden mostrar valores localizados:

Name Descripción Example
DisplayName Normalmente, es igual al nombre de esquema, pero puede incluir espacios. Cuenta
DisplayCollectionName Versión plural del nombre para mostrar. Cuentas
Description Frase corta que describe la tabla. Empresa que representa a un cliente o cliente potencial. La empresa a la que se factura en las transacciones comerciales.

Use estos valores localizables para hacer referencia a las tablas de una aplicación. Puede cambiar estos valores cuando lo desee. Para agregar o editar valores localizados, vea Traducir texto personalizado de tabla, formulario y columna en otros idiomas.

Clave principal

El PrimaryIdAttribute valor de la propiedad es el nombre lógico de la columna que actúa como clave principal para la tabla.

De forma predeterminada, todas las tablas incluyen una sola columna de identificador único GUID denominada <table logical name>Id.

Nombre principal

El PrimaryNameAttribute valor de propiedad es el nombre lógico de la columna que almacena el valor de cadena que identifica el registro de tabla. Este valor aparece en vínculos que abren el registro en una interfaz de usuario.

Ejemplo: La tabla Contact usa la columna FullName como columna de nombre principal.

Nota:

No todas las tablas tienen un valor de propiedad PrimaryNameAttribute. Algunas tablas no están diseñadas para mostrarse en una interfaz de usuario.

Imágenes de tabla

El valor de la propiedad PrimaryImageAttribute es el nombre lógico de la columna de imagen que eliges para representar el registro de entidad. Una aplicación puede mostrar esta imagen.

Ejemplo: la columna EntityImagede la tabla Contact puede almacenar una imagen del contacto.

Nota:

Esta imagen es diferente del icono que muestran las aplicaciones basadas en modelos para una tabla. La IconVectorName propiedad contiene el nombre del recurso web SVG que establece el icono.

Para más información, consulte:

Tipos de tablas

Las funcionalidades y el comportamiento de las tablas dependen de varias propiedades de tabla. La mayoría de estas propiedades son relativamente simples y tienen nombres descriptivos. Cuatro propiedades que requieren algo más de explicación son: propiedad de las tablas, tablas de actividad, tabla ActivityParty y tablas hijas.

Propiedad de la tabla

Puede clasificar las tablas por el modo en que los datos de ellos son propiedad. Este concepto es importante para comprender cómo aplicar la seguridad a las tablas. La OwnershipType propiedad contiene esta información. En la tabla siguiente se describen los distintos tipos de propiedad:

Tipo de propiedad Descripción
BusinessOwned Los datos pertenecen a la unidad de negocio. Puede controlar el acceso a los datos en el nivel de unidad de negocio.
None Los datos no pertenecen a otra tabla.
OrganizationOwned Los datos pertenecen a la organización. Puede controlar el acceso a los datos en el nivel de organización.
UserOwned Los datos pertenecen a un usuario o a un equipo. Puede controlar las acciones que se pueden realizar en estos registros en el nivel de usuario.
Filtered (versión preliminar) Los registros no tienen propietario. Puede controlar el acceso a través de privilegios de rol de seguridad en función de los filtros que evalúen los valores de columna.

Al crear nuevas tablas, las únicas opciones de propiedad son: OrganizationOwned, UserOwnedo Filtered (versión preliminar). No se puede cambiar esta opción después de realizar una elección.

Elija UserOwned cuando los registros necesitan la propiedad de usuario o equipo, la asignación y el uso compartido. Elija OrganizationOwned cuando el acceso de nivel de organización sea suficiente. Elija Filtered (versión preliminar) cuando necesite acceso de nivel de fila en función de los valores de columna, con permisos concedidos a través de filtros de rol de seguridad. Los registros de tablas Filtered no tienen propietario y no se pueden asignar ni compartir.

También puede aplicar filtros de registro a las tablas UserOwned y OrganizationOwned para controlar el acceso de nivel de fila en función de los valores de columna sin cambiar su OwnershipType. Estas tablas conservan su modelo de propiedad existente.

Más información sobre la propiedad de los registros filtrados:

Tablas de actividades

Una actividad es una tarea que un usuario realiza o planea realizar. Una actividad es cualquier acción para la que puede realizar una entrada en un calendario.

Las actividades se modelan de forma diferente a otros tipos de tablas que almacenan datos empresariales. Los datos sobre las actividades se muestran con frecuencia en una lista, pero cada tipo de actividad requiere propiedades únicas. En lugar de usar una sola tabla activity con todas las propiedades posibles, use tipos independientes de tablas de actividad.

Cada una de estas tablas hereda las propiedades de una tabla ActivityPointer base ( tipo de entidad activitypointer de API web). Estas tablas tienen la IsActivity propiedad establecida en true.

Tabla /
Tipo de entidad
Nombre para mostrar Descripción
adx_inviteredemption /
adx_inviteredemption
Canje de invitación Contiene información sobre el canje de una invitación.
adx_portalcomment /
adx_portalcomment
Comentario del portal Una actividad que se utiliza para compartir información entre el usuario y el cliente en el portal.
Motor de /
Cita
Appointment Compromiso que representa un intervalo de tiempo con las fechas de inicio y fin y la duración.
chat /
chat
Chat de Teams Para uso interno. Entidad que almacena datos de asociación de registros de Dynamics 365 con Microsoft Teams chat.
Correo electrónico /
email
Correo electrónico Actividad entregada con protocolos de correo electrónico.
Fax /
fax
Fax Actividad que mantiene un seguimiento del resultado de llamadas y el número de páginas de un fax y que, opcionalmente, almacena una copia electrónica del documento.
Carta /
letter
Carta Actividad que realiza un seguimiento de la entrega de una carta. Actividad que puede contener la copia electrónica de la carta.
Llamada telefónica /
phonecall
Llamada de teléfono Actividad para mantener un seguimiento de una llamada de teléfono.
RecurringAppointmentMaster /
recurringappointmentmaster
Cita periódica Cita principal de una serie de citas periódicas.
SocialActivity /
socialactivity
Actividad social Para uso interno.
Tarea /
tarea:
Tarea Actividad genérica que representa el trabajo que se debe realizar.

Cuando un usuario crea uno de estos tipos de registros de tabla de actividad, el sistema crea un registro de tabla correspondiente ActivityPointer con el mismo ActivityId valor de columna de identificador único. No puede crear, actualizar ni eliminar instancias de la ActivityPointer tabla, pero puede recuperarlas. Este diseño le permite presentar todos los tipos de actividades juntas en una lista.

Puede crear tablas de actividad personalizadas que se comporten de la misma manera.

Tabla ActivityParty

Use la tabla ActivityParty (tipo de entidad activityparty de API web) para agregar estructura a las columnas de la tabla PartyListType de actividad que incluyen referencias a otras tablas. Use esta tabla al establecer valores para columnas de tabla de actividad como Email.to o PhoneCall.from. Configure la columna participationtypemask para definir el papel que desempeña la referencia. Los roles incluyen Sender, ToRecipient, Organizery mucho más.

Se puede consultar la tabla ActivityParty, pero no se puede crear, recuperar, actualizar o eliminar una parte de actividad fuera de la actividad con la que está relacionada.

Tablas secundarias

Las tablas en las que la IsChildEntity propiedad es true nunca tienen ningún privilegio definido y nunca son propiedad de usuario o equipo. Las operaciones que se pueden realizar en una tabla secundaria están enlazadas a una tabla a la que están asociadas a través de una relación de varios a uno. Los usuarios solo pueden realizar operaciones en tablas secundarias si pueden realizar la misma operación en la tabla relacionada. Las tablas secundarias se eliminan automáticamente cuando se elimina el registro de tabla del que dependen.

Por ejemplo, Comment (PostComment) y Like (PostLike) son elementos secundarios de la tabla Post .

Claves alternativas

Cada definición de clave alternativa describe una o varias columnas en combinación que identifican de forma única un registro. Normalmente, solo se aplican claves alternativas para la integración con sistemas externos. Esta característica es valiosa si va a integrar datos con un sistema que no admite claves de identificador único GUID. Puede definir un valor de columna único o una combinación de valores de columna para identificar de forma única una tabla. Al agregar una clave alternativa, se aplica una restricción de unicidad en estas columnas. No puede crear ni actualizar otro registro de la misma tabla para que tenga los mismos valores.

Para más información, consulte:

Estados de tabla

La mayoría de las tablas tienen dos propiedades para realizar un seguimiento del estado de un registro. Estas propiedades son StateCode, que aparecen como Estado en aplicaciones controladas por modelos y StatusCode, que aparece como Motivo de estado en aplicaciones controladas por modelos.

Ambas propiedades contienen un conjunto de opciones que muestran los valores válidos. Los StateCode valores y StatusCode están vinculados para que solo ciertas StatusCode opciones sean válidas para un determinado StateCode.

Este vínculo puede variar según la tabla, pero el patrón común para muchas tablas y el valor predeterminado para las tablas personalizadas es este patrón:

Opciones de StateCode Elecciones de StatusCode
0: Activo 1: Activo
1: Inactivo 2: Inactivo

Algunas tablas tienen diferentes conjuntos de opciones.

Ejemplo: PhoneCall tabla StateCode y StatusCode opciones

StateCode Código de estado
0: Abrir 1: Abrir
1: Completado 2: Hecho
4: Recibido
2: Cancelado 3: Cancelado

No puede personalizar el conjunto de códigos de estado válidos para una tabla, pero puede personalizar los códigos de estado. Puede agregar más StatusCode opciones para un StateCode correspondiente.

En el caso de las tablas personalizadas, puede definir más criterios para las transiciones válidas entre estados.

Para más información, consulte:

Consulte también

Tablas de Dataverse