Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Há duas categorias amplas de alterações no sistema de definição de tabela associadas à introdução de tabelas virtuais (também conhecidas como entidades virtuais) no Microsoft Dataverse:
- Adição de novos assemblies, namespaces, classes e outros tipos para dar suporte ao desenvolvimento de provedores de dados de tabelas virtuais personalizadas
- Alterações na plataforma principal, incluindo algumas propriedades adicionais para dar suporte ao mapeamento de fonte de dados externa e modificação de comportamentos de propriedades de tabela e coluna existentes que refletem as limitações da implementação inicial desse recurso
Assembly do SDK de Dados do Dynamics 365
O assembly do SDK de Dados do Dynamics 365, Microsoft.Xrm.Sdk.Data.dll, contém tipos para auxiliar na criação de provedores de dados de tabelas virtuais personalizadas. Ele é composto pelos seguintes namespaces:
| Namespace | Description |
|---|---|
| Microsoft.Xrm.Sdk.Data | Namespace base que contém alguns tipos comuns, como a enumeração AllowedQueryOptions |
| Microsoft.Xrm.Sdk.Data.CodeGen | Contém classes e interfaces que dão suporte à reflexão dinâmica, à correspondência de tipos e à geração de código. Usado principalmente pelo mecanismo de provedor interno. |
| Microsoft.Xrm.Sdk.Data.Converters | Um conjunto de classes para converter tipos XRM padrão em seus tipos fundamentais .NET correspondentes |
| Microsoft.Xrm.Sdk.Data.Exceptions | Um conjunto de classes de exceção que representam erros que podem ocorrer durante a resolução de valor de runtime. Todas são derivadas de Microsoft.Xrm.Sdk.SdkExceptionBase. |
| Microsoft.Xrm.Sdk.Data.Expressions | Classes para ajudar na implementação das transformações de consulta com suporte, como FILTER, JOIN e ORDER. |
| Microsoft.Xrm.Sdk.Data.Mappings | Classes e interfaces que criam o mapeamento de tipos de definição de tabelas virtuais para tipos externos. |
| Microsoft.Xrm.Sdk.Data.Visitors | Classes que implementam o padrão de visitante para executar operações específicas no parâmetro QueryExpression passado ao provedor de dados durante solicitações RetrieveMultiple. Fornece suporte específico para consulta genérica e processamento baseado em LINQ. Essas classes são derivadas de Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase. |
Esse assembly é distribuído como um pacote NuGet: Microsoft.CrmSdk.Data
Alterações na plataforma principal
As alterações a seguir nos tipos de referência padrão do Dataverse foram introduzidas para dar suporte a tabelas virtuais.
Novas tabelas
O Dataverse expõe provedores de dados de tabela virtual e fontes como as seguintes tabelas: EntityDataProvider e EntityDataSource.
Novas propriedades de definição de tabela
Quatro novas propriedades foram adicionadas à EntityMetadata classe:
| Propriedade | Description |
|---|---|
| DataProviderId | GUID que identifica o provedor de dados de tabela virtual associado |
| DataSourceId | GUID que identifica a fonte de dados da tabela virtual associada |
| ExternalName | Nome deste tipo na fonte de dados externa |
| ExternalCollectionName | Nome plural para esse tipo, usado na interface do usuário e para dar suporte ao acesso via OData |
Duas novas propriedades foram adicionadas à AttributeMetadata classe:
| Propriedade | Description |
|---|---|
| ExternalName | Nome do tipo na fonte de dados externa |
| IsDataSourceSecret | Indica se o campo contém informações confidenciais |
A propriedade ExternalName também foi adicionada às classes OptionMetadata e OptionSetMetadata. Esses nomes externos auxiliam no mapeamento da fonte de dados externa, especificando o nome do tipo associado na fonte de dados externa. Essas propriedades são usadas apenas para tabelas virtuais; para um tipo de entidade personalizada interna ou padrão, esses nomes externos devem ser null.
criação de tabela virtual
A abordagem para criar programaticamente um tipo de tabela virtual difere ligeiramente de uma criação de tipo de entidade personalizada padrão:
- Se o provedor de dados associado (e, opcionalmente, a fonte de dados) for conhecido no momento da criação, isso será especificado.
- Se o provedor de dados desse tipo não for conhecido, no mínimo, DataProviderId será definido como
7015A531-CC0D-4537-B5F2-C882A1EB65AD, e o DataSourceId será definido comonull. Antes que as instâncias desse tipo sejam usadas no runtime, essas propriedades devem ser atribuídas aos valores apropriados.
Duas novas tabelas, EntityDataProvider e, opcionalmente, EntityDataSource, serão criadas quando você registrar um plugin, e suas respectivas IDs, entitydataproviderid e entitydatasourceid, representam esses GUIDs necessários. (Caso contrário, os desenvolvedores raramente precisam acessar esses tipos personalizados diretamente.) Observe que o DataSource contém a propriedade entitydataproviderid que deve corresponder ao tipo DataProvider correspondente ou uma exceção de runtime será gerada.
Aviso
As tabelas padrão (não virtuais) devem ter os valores de seus valores associados DataProviderId e DataSourceId definidos como seus valores padrão (null), caso contrário, uma exceção de runtime será gerada. Após a criação, você não pode converter um tipo não virtual em um tipo virtual ou o inverso.
Alterações no comportamento da definição da propriedade da tabela
A tabela a seguir detalha como o comportamento das propriedades EntityMetadata padrão é modificado quando aplicado a tabelas virtuais. Algumas propriedades não são válidas para tabelas virtuais, enquanto outras são limitadas em escopo ou valor.
| Propriedade de metadados | É aplicável? | Notes |
|---|---|---|
| ActivityTypeMask | inválido | Sempre 0 |
| Attributes | válido | |
| AutoCreateAccessTeams | inválido | Sempre falso |
| AutoRouteToOwnerQueue | inválido | Sempre falso, não há suporte para filas. |
| CanBeInManyToMany | válido | |
| CanBePrimaryEntityInRelationship | válido | |
| CanBeRelatedEntityInRelationship | válido | |
| CanChangeHierarchicalRelationship | inválido | Sempre falso, não há suporte para relacionamentos hierárquicos. |
| CanChangeTrackingBeEnabled | inválido | Sempre falso, não há suporte para valores de auditoria e controle de alterações. |
| CanCreateAttributes | válido | |
| CanCreateCharts | inválido | Sempre falso |
| CanCreateForms | válido | |
| CanCreateViews | válido | |
| CanEnableSyncToExternalSearchIndex | inválido | Sempre falso |
| CanModifyAdditionalSettings | válido | |
| CanTriggerWorkflow | inválido | Sempre falso, os fluxos de trabalho não podem ser acionados. |
| ChangeTrackingEnabled | inválido | Sempre falso |
| CollectionSchemaName | válido | |
| DaysSinceRecordLastModified | inválido | Sempre nulo ou 0 |
| Description | válido | |
| DisplayCollectionName | válido | |
| DisplayName | válido | |
| EnforceStateTransitions | inválido | Não há suporte para StateCode e Status. |
| EntityColor | válido | |
| EntityHelpUrl | válido | |
| EntityHelpUrlEnabled | válido | |
| EntitySetName | válido | |
| ExtensionData | inválido | Propriedade preterida |
| HasChanged | válido | |
| IconLargeName | válido | |
| IconMediumName | válido | |
| IconSmallName | válido | |
| IntroducedVersion | válido | |
| IsActivity | inválido | Sempre falso, não há suporte para atividades. |
| IsActivityParty | inválido | Sempre falso |
| IsAIRUpdated | inválido | Deprecated |
| IsAuditEnabled | inválido | Sempre falso, não há suporte para auditoria. |
| IsAvailableOffline | inválido | Sempre falso, não há suporte para uso offline. |
| IsBusinessProcessEnabled | inválido | Sempre falso, não há suporte para processos empresariais. |
| IsChildEntity | inválido | Sempre falso, todas as tabelas virtuais são de propriedade organizacional. |
| IsConnectionsEnabled | válido | |
| IsCustomEntity | válido | |
| IsCustomizable | válido | |
| IsDocumentManagementEnabled | válido | |
| IsDocumentRecommendationsEnabled | inválido | Sempre falso, não há suporte para este novo recurso. |
| IsDuplicateDetectionEnabled | inválido | Sempre falso, mas a detecção de duplicidades pode ser executada na fonte de dados. |
| IsEnabledForCharts | limitado | Somente para cláusulas Fetch com suporte. |
| IsEnabledForTrace | válido | |
| IsImportable | válido | |
| IsInteractionCentricEnabled | válido | |
| IsIntersect | válido | |
| IsKnowledgeManagementEnabled | inválido | Sempre falso, não há suporte para a integração do gerenciamento do conhecimento. |
| IsMailMergeEnabled | válido | |
| IsManaged | válido | |
| IsMappable | válido | |
| IsOfflineInMobileClient | inválido | Sempre falso, os valores da tabela virtual não são armazenados em cache para uso offline. |
| IsOneNoteIntegrationEnabled | válido | |
| IsOptimisticConcurrencyEnabled | inválido | Sempre falso, a simultaneidade deve ser implementada na fonte de dados. |
| IsPrivate | válido | |
| IsQuickCreateEnabled | válido | |
| IsReadOnlyInMobileClient | válido | |
| IsRenameable | válido | |
| IsSLAEnabled | inválido | Sempre falso |
| IsStateModelAware | inválido | |
| IsValidForAdvancedFind | válido | |
| IsValidForQueue | válido | |
| IsVisibleInMobile | válido | |
| IsVisibleInMobileClient | válido | |
| Teclas | inválido | Não há suporte para chaves alternativas |
| LogicalCollectionName | válido | |
| LogicalName | válido | |
| ManyToManyRelationships | válido | |
| ManyToOneRelationships | válido | Não há suporte entre duas tabelas virtuais. |
| MetadataId | válido | |
| MobileOfflineFilters | inválido | Sempre falso, não há suporte para uso offline. |
| ObjectTypeCode | válido | |
| OneToManyRelationships | válido | |
| OwnershipType | inválido | Sempre OrganizationOwned |
| PrimaryIdAttribute | válido | |
| PrimaryImageAttribute | válido | |
| PrimaryNameAttribute | válido | |
| Privilégios | inválido | |
| RecurrenceBaseEntityLogicalName | inválido | |
| ReportViewName | inválido | |
| SchemaName | válido | |
| SyncToExternalSearchIndex | inválido |
Alterações de comportamento da propriedade de definição de coluna
A tabela a seguir explica como o comportamento das propriedades AttributeMetadata padrão é modificado quando aplicado a tabelas virtuais. Algumas propriedades não são válidas para tabelas virtuais, enquanto outras são limitadas em escopo ou valor.
| Propriedade de metadados | É aplicável? | Notes |
|---|---|---|
| ColumnNumber | inválido | |
| DeprecatedVersion | válido | |
| Description | válido | |
| DisplayName | válido | |
| EntityLogicalName | válido | |
| ExtensionData | inválido | |
| HasChanged | válido | |
| InheritsFrom | válido | |
| IntroducedVersion | válido | |
| IsAuditEnabled | inválido | Sempre falso, não há suporte para auditoria. |
| 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 | inválido | Sempre falso, não há suporte para a segurança no nível do 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 | |
| RequiredLevel | válido | |
| SchemaName | válido | |
| Tipo de Fonte | inválido | Sempre 0, não há suporte para valores calculados ou acumulados. |
Consulte também
Introdução às entidades virtuais
Provedores de dados de tabela virtual personalizados
Exemplo: plug-in genérico do provedor de dados para tabela virtual