Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Há duas categorias amplas de alterações no sistema de definição de tabela que estão associadas à introdução de tabelas virtuais (também conhecidas como entidades virtuais) no Microsoft Dataverse:
- Adição de uma nova assemblagem, espaços de nomes, classes e outros tipos para dar suporte ao desenvolvimento de fornecedores 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
Montagem do SDK de Dados do Dynamics 365
A assemblagem do SDK do Dynamics 365 Customer Engagement, Microsoft.Xrm.Sdk.Data.dll, contém tipos para ajudar na criação de fornecedores de dados de tabelas virtuais personalizadas. É composto pelos seguintes espaços de nomes:
| Namespace | Description |
|---|---|
| Microsoft.Xrm.Sdk.Data | Espaço de nomes base que contém alguns tipos comuns, como a enumeração AllowedQueryOptions |
| Microsoft.Xrm.Sdk.Data.CodeGen | Contém classes e interfaces que suportam reflexão dinâmica, correspondência de tipos e geração de código. Usado principalmente pelo motor do fornecedor interno. |
| Microsoft.Xrm.Sdk.Data.Converters | Um conjunto de classes para converter tipos XRM standard para os respetivos 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 do valor de runtime. Todos são derivados de Microsoft.Xrm.Sdk.SdkExceptionBase. |
| Microsoft.Xrm.Sdk.Data.Expressions | Classes para ajudar na implementação das transformações de consulta suportadas, 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 transmitido para o fornecedor de dados durante pedidos 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. |
Este assembly é distribuído como um pacote NuGet: Microsoft.CrmSdk.Data
Alterações à plataforma principal
As seguintes alterações nos tipos de referência padrão do Dataverse foram introduzidas para oferecer suporte a tabelas virtuais.
Novas tabelas
O Dataverse expõe fontes e provedores de dados de tabela virtual 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 para este tipo na fonte de dados externa |
| ExternalCollectionName | Nome plural para este tipo, usado na interface do usuário e para dar suporte ao acesso 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 foi também adicionada às classes OptionMetadata e OptionSetMetadata. Esses nomes externos ajudam 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 tabelas virtuais
A abordagem para criar programaticamente um tipo de tabela virtual difere ligeiramente de uma criação de tipo de entidade personalizada padrão porque:
- Se o fornecedor de dados associado (e, opcionalmente, a origem de dados) for conhecido no momento da criação, esses são especificados.
- Se o fornecedor de dados para este tipo não for conhecido, no mínimo, DataProviderId é definido como
7015A531-CC0D-4537-B5F2-C882A1EB65AD, e o DataSourceId é definido comonull. Antes de as instâncias deste tipo serem utilizadas em runtime, devem ser atribuídos valores adequados a estas propriedades.
Duas novas tabelas, EntityDataProvider e, opcionalmente EntityDataSource, serão criadas quando você registrar um plug-in, e seus respetivos ID's, entitydataproviderid e entitydatasourceid, representam esses GUIDs necessários. (Caso contrário, os desenvolvedores raramente precisam acessar esses tipos personalizados diretamente.) Observe que DataSource contém a propriedade entitydataproviderid que deve corresponder ao tipo DataProvider correspondente ou uma exceção de tempo de execução será lançada.
Advertência
As tabelas padrão (não virtuais) devem ter os valores de seus associados DataProviderId e DataSourceId definidos como seus valores padrão (null), caso contrário, uma exceção de tempo de execução será lançada. Uma vez criado, não pode converter de um tipo não virtual para um tipo virtual, ou o inverso.
Alterações no comportamento da propriedade de definição de tabela
A tabela a seguir detalha como o comportamento das propriedades padrão EntityMetadata é 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 | Aplica-se? | Notes |
|---|---|---|
| ActivityTypeMask | inválido | Sempre 0 |
| Attributes | válido | |
| AutoCreateAccessTeams | inválido | Sempre falso |
| AutoRouteToOwnerQueue | inválido | Sempre falso, filas não são suportadas. |
| CanBeInManyToMany | válido | |
| CanBePrimaryEntityInRelationship | válido | |
| CanBeRelatedEntityInRelationship | válido | |
| CanChangeHierarchicalRelationship | inválido | Sempre falso, relações hierárquicas não são suportadas. |
| CanChangeTrackingBeEnabled | inválido | Sempre falso, os valores de controlo de alterações e auditoria não são suportados. |
| 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 | StateCode e Status não são suportados. |
| 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, atividades não são suportadas. |
| IsActivityParty | inválido | Sempre falso |
| IsAIRUpdated | inválido | Deprecated |
| IsAuditEnabled | inválido | Sempre falso, a auditoria não é suportada. |
| IsAvailableOffline | inválido | Sempre falso, a utilização offline não é suportada. |
| IsBusinessProcessEnabled | inválido | Sempre falso, os processos de negócios não são suportados. |
| 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, esta nova funcionalidade não é suportada. |
| IsDuplicateDetectionEnabled | inválido | Sempre falso, mas a deteção de duplicados pode ser realizada na origem de dados. |
| IsEnabledForCharts | limitado | Apenas para cláusulas Obter suportadas. |
| IsEnabledForTrace | válido | |
| IsImportable | válido | |
| IsInteractionCentricEnabled | válido | |
| IsIntersect | válido | |
| IsKnowledgeManagementEnabled | inválido | Sempre falso, a integração de gestão de conhecimento não é suportada. |
| 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 origem 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 | |
| Keys | inválido | Não há suporte para chaves alternativas |
| LogicalCollectionName | válido | |
| LogicalName | válido | |
| ManyToManyRelationships | válido | |
| ManyToOneRelationships | válido | Não suportado entre duas tabelas virtuais. |
| MetadataId | válido | |
| MobileOfflineFilters | inválido | Sempre falso, a utilização offline não é suportada. |
| 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 no comportamento da propriedade de definição de coluna
A tabela a seguir explica como o comportamento das propriedades padrão AttributeMetadata são modificadas quando aplicadas 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 | Aplica-se? | 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, a auditoria não é suportada. |
| 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, a segurança a nível do campo não é suportada. |
| 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 | |
| SourceType | inválido | Sempre 0, valores calculados ou de rollup não suportados. |
Consulte também
Introdução às entidades virtuais
Provedores de dados de tabela virtual personalizados
Exemplo: Plug-in de fornecedor genérico de dados de tabela virtual