Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Dos amplias categorías de cambios en el sistema de definición de tablas están asociadas a la introducción de tablas virtuales (también conocidas como entidades virtuales) en Microsoft Dataverse:
- Adición de un nuevo ensamblado, espacios de nombres, clases y otros tipos para admitir el desarrollo de proveedores de datos de tabla virtuales personalizados
- Cambios en la plataforma principal, incluidas algunas otras propiedades para admitir la asignación de orígenes de datos externos y la modificación de comportamientos de las propiedades existentes de tabla y columna que reflejan las limitaciones de la implementación inicial de esta característica
ensamblado del SDK de datos de Dynamics 365
El ensamblado del SDK de datos de Dynamics 365, Microsoft.Xrm.Sdk.Data.dll, contiene tipos que ayudan a crear proveedores de datos de tabla virtual personalizados. Consta de los siguientes espacios de nombres:
| Namespace | Description |
|---|---|
| Microsoft.Xrm.Sdk.Data | Espacio de nombres base que contiene algunos tipos comunes, como la enumeración AllowedQueryOptions |
| Microsoft.Xrm.Sdk.Data.CodeGen | Contiene clases e interfaces que admiten reflexión dinámica, correspondencia de tipos y generación de código. Utilizado principalmente por el motor del proveedor interno. |
| Microsoft.Xrm.Sdk.Data.Converters | Un conjunto de clases para convertir los tipos XRM estándar a sus tipos fundamentales de .NET correspondientes |
| Microsoft.Xrm.Sdk.Data.Exceptions | Un conjunto de clases de excepciones que representan errores que se pueden producir durante la resolución del valor de ejecución. Todos se derivan de Microsoft.Xrm.Sdk.SdkExceptionBase. |
| Microsoft.Xrm.Sdk.Data.Expressions | Clases para ayudar a implementar las transformaciones de consulta admitidas, como FILTER, JOIN y ORDER. |
| Microsoft.Xrm.Sdk.Data.Mappings | Clases e interfaces que establecen el mapeo de tipos de definición de tabla virtual a tipos externos. |
| Microsoft.Xrm.Sdk.Data.Visitors | Clases que implementan el patrón de visitantes para realizar operaciones específicas en el parámetro QueryExpression que se pasa al proveedor de datos durante las solicitudes RetrieveMultiple. Proporciona compatibilidad específica tanto para consulta genérica como para procesamiento basado en LINQ. Estas clases se derivan de Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase. |
Distribuya este ensamblado como un paquete NuGet: Microsoft.CrmSdk.Data.
Cambios en la plataforma principal
Los siguientes cambios en los tipos de referencia estándar de Dataverse admiten tablas virtuales.
Nuevas tablas
Dataverse expone orígenes y proveedores de datos de tabla virtual como las tablas siguientes: EntityDataProvider y .
Nuevas propiedades de definición de tabla
Se agregaron cuatro nuevas propiedades a la clase :
| Propiedad | Description |
|---|---|
| DataProviderId | GUID que identifica el proveedor de datos de tabla virtual asociado |
| DataSourceId | GUID que identifica el origen de datos de tabla virtual asociado |
| ExternalName | Nombre de tipo en el origen de datos externo |
| ExternalCollectionName | Nombre plural para este tipo, que se usa en la interfaz de usuario y para admitir el acceso a OData |
Se agregaron dos nuevas propiedades a la clase :
| Propiedad | Description |
|---|---|
| ExternalName | Nombre del tipo en el origen de datos externo |
| IsDataSourceSecret | Indica si el campo contiene información confidencial. |
La propiedad también se agregó a las clases y . Estos nombres externos ayudan al mapeo de orígenes de datos externos, especificando el nombre del tipo asociado en el origen de datos externo. Estas propiedades solo se usan para tablas virtuales. Para un tipo de entidad personalizado integrado o estándar, estos nombres externos deben ser .
Creación de tablas virtuales
El enfoque para crear mediante programación un tipo de tabla virtual difiere ligeramente de la creación de un tipo de entidad personalizado estándar en que:
- Si conoce el proveedor de datos asociado (y, opcionalmente, el origen de datos) en el momento de la creación, especifique estos valores.
- Si no conoce el proveedor de datos para este tipo, establezca en y establezca en . Antes de usar instancias de este tipo en tiempo de ejecución, asigne estos valores adecuados a estas propiedades.
Al registrar un complemento, se crean dos tablas nuevas, EntityDataProvider y, opcionalmente , . Sus respectivos identificadores, y , representan estos GUIDs necesarios. (De lo contrario, los desarrolladores rara vez necesitan acceder a estos tipos personalizados directamente). Tenga en cuenta que DataSource contiene la propiedad que debe coincidir con el tipo DataProvider correspondiente o se produce una excepción en tiempo de ejecución.
Advertencia
Las tablas estándar (no virtuales) deben tener los valores de sus asociados y establecidos en sus valores predeterminados (), de lo contrario, se produce una excepción en tiempo de ejecución. Una vez creado, no se puede convertir de un tipo no virtual a un tipo virtual o a la inversa.
Cambios en el comportamiento de las propiedades de definición de tabla
En la tabla siguiente se detalla cómo cambia el comportamiento de las propiedades EntityMetadata estándar al aplicarlas a tablas virtuales. Algunas propiedades no son válidas para las tablas virtuales, mientras que otras están limitadas en el ámbito o el valor.
| Propiedad de metadatos | ¿Se aplica? | Notas |
|---|---|---|
| ActivityTypeMask | No válido | Siempre 0 |
| Attributes | válido | |
| AutoCreateAccessTeams | No válido | Siempre false |
| AutoRouteToOwnerQueue | No válido | Siempre false, no se admiten las colas. |
| CanBeInManyToMany | válido | |
| CanBePrimaryEntityInRelationship | válido | |
| CanBeRelatedEntityInRelationship | válido | |
| CanChangeHierarchicalRelationship | No válido | Siempre falso, no se admiten relaciones jerárquicas. |
| CanChangeTrackingBeEnabled | No válido | Siempre false, no se admiten valores de auditoría y seguimiento de cambios. |
| CanCreateAttributes | válido | |
| CanCreateCharts | No válido | Siempre false |
| CanCreateForms | válido | |
| CanCreateViews | válido | |
| CanEnableSyncToExternalSearchIndex | No válido | Siempre false |
| CanModifyAdditionalSettings | válido | |
| CanTriggerWorkflow | No válido | Siempre false, no se pueden desencadenar flujos de trabajo. |
| ChangeTrackingEnabled | No válido | Siempre false |
| CollectionSchemaName | válido | |
| DaysSinceRecordLastModified | No válido | Siempre nulo o 0 |
| Description | válido | |
| DisplayCollectionName | válido | |
| DisplayName (Nombre para mostrar) | válido | |
| EnforceStateTransitions | No válido | StateCode y Status no se admiten. |
| EntityColor | válido | |
| EntityHelpUrl | válido | |
| EntityHelpUrlEnabled | válido | |
| EntitySetName | válido | |
| ExtensionData | No válido | Propiedad obsoleta |
| HasChanged | válido | |
| IconLargeName | válido | |
| IconMediumName | válido | |
| IconSmallName | válido | |
| IntroducedVersion | válido | |
| IsActivity | No válido | Siempre false, no se admiten actividades. |
| IsActivityParty | No válido | Siempre false |
| IsAIRUpdated | No válido | Deprecated |
| IsAuditEnabled | No válido | Siempre false, no se admite la auditoría. |
| IsAvailableOffline | No válido | Siempre es falso, no se admite el uso sin conexión. |
| IsBusinessProcessEnabled | No válido | Siempre false, no se admiten procesos de negocio. |
| IsChildEntity | No válido | Siempre es falso, todas las tablas virtuales son propiedad de la organización. |
| IsConnectionsEnabled | válido | |
| IsCustomEntity | válido | |
| IsCustomizable | válido | |
| IsDocumentManagementEnabled | válido | |
| IsDocumentRecommendationsEnabled | No válido | Siempre false, no se admite esta característica nueva. |
| IsDuplicateDetectionEnabled | No válido | Siempre false, pero la detección de duplicados se puede realizar en el origen de datos. |
| IsEnabledForCharts | limitado | Solo para cláusulas de Fetch admitidas. |
| IsEnabledForTrace | válido | |
| IsImportable | válido | |
| IsInteractionCentricEnabled | válido | |
| IsIntersect | válido | |
| IsKnowledgeManagementEnabled | No válido | Siempre falso, no se admite la integración de la gestión del conocimiento. |
| IsMailMergeEnabled | válido | |
| IsManaged | válido | |
| IsMappable | válido | |
| IsOfflineInMobileClient | No válido | Siempre es falso, los valores de tabla virtual no se almacenan en caché para uso sin conexión. |
| IsOneNoteIntegrationEnabled | válido | |
| IsOptimisticConcurrencyEnabled | No válido | Siempre false, la simultaneidad se debe implementar en el origen de datos. |
| IsPrivate | válido | |
| IsQuickCreateEnabled | válido | |
| IsReadOnlyInMobileClient | válido | |
| IsRenameable | válido | |
| IsSLAEnabled | No válido | Siempre false |
| IsStateModelAware | No válido | |
| IsValidForAdvancedFind | válido | |
| IsValidForQueue | válido | |
| IsVisibleInMobile | válido | |
| IsVisibleInMobileClient | válido | |
| Keys | No válido | No se admiten claves alternativas |
| LogicalCollectionName | válido | |
| LogicalName | válido | |
| ManyToManyRelationships | válido | |
| ManyToOneRelationships | válido | No se admite entre dos tablas virtuales. |
| MetadataId | válido | |
| MobileOfflineFilters | No válido | Siempre es falso, no se admite el uso sin conexión. |
| ObjectTypeCode | válido | |
| OneToManyRelationships | válido | |
| OwnershipType | No válido | Siempre OrganizationOwned |
| PrimaryIdAttribute | válido | |
| PrimaryImageAttribute | válido | |
| PrimaryNameAttribute | válido | |
| Privileges | No válido | |
| RecurrenceBaseEntityLogicalName | No válido | |
| ReportViewName | No válido | |
| SchemaName | válido | |
| SyncToExternalSearchIndex | No válido |
Cambios en el comportamiento de las propiedades de definición de columna
En la tabla siguiente se explica cómo cambia el comportamiento de las propiedades AttributeMetadata estándar al aplicarlas a tablas virtuales. Algunas propiedades no son válidas para las tablas virtuales, mientras que otras tienen un ámbito o valor limitados.
| Propiedad de metadatos | ¿Se aplica? | Notas |
|---|---|---|
| ColumnNumber | No válido | |
| DeprecatedVersion | válido | |
| Description | válido | |
| DisplayName (Nombre para mostrar) | válido | |
| EntityLogicalName | válido | |
| ExtensionData | No válido | |
| HasChanged | válido | |
| InheritsFrom | válido | |
| IntroducedVersion | válido | |
| IsAuditEnabled | No válido | Siempre false, no se admite la auditoría. |
| IsCustomAttribute | válido | |
| IsCustomizable | válido | |
| IsFilterable | válido | |
| IsGlobalFilterEnabled | válido | |
| IsLogical | válido | |
| IsManaged | válido | |
| IsPrimaryId | válido | |
| IsPrimaryName | válido | |
| IsRenameable | válido | |
| IsSearchable | válido | |
| IsSecured | No válido | Siempre false, no se admite la seguridad de nivel de campo. |
| IsSortableEnabled | válido | |
| IsValidForAdvancedFind | válido | |
| IsValidForCreate | válido | |
| IsValidForRead | válido | |
| IsValidForUpdate | válido | |
| LinkedAttributeId | válido | |
| LogicalName | válido | |
| MetadataId | válido | |
| NivelRequerido | válido | |
| SchemaName | válido | |
| TipoDeFuente | No válido | Siempre es 0; no se admiten valores calculados ni acumulativos. |
Consulte también
Introducción a las entidades virtuales
Proveedores de datos de tabla virtual personalizados
Ejemplo: complemento de proveedor de datos para tablas virtuales genérico