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.
Usando o Microsoft Dataverse Data SDK, os desenvolvedores do .NET têm a opção de criar provedores de dados de tabela virtual personalizados para ajudar a integrar tipos de fonte de dados externos que não são suportados por um provedor de dados existente. Cada provedor de dados é composto por um conjunto reutilizável de plug-ins Dataverse que implementam as operações CRUD suportadas. Para cada tabela virtual, também conhecida como uma entidade virtual, os desenvolvedores podem criar plug-ins e registrá-los representando cada uma das operações Create, Update, Retrieve, RetrieveMultiple e Delete. Esta seção fornece informações fundamentais sobre provedores de dados e abordagens para o desenvolvimento de provedores personalizados, incluindo código de exemplo.
Observação
Como alternativa à criação de um provedor de fonte de dados personalizado, você deve considerar a adaptação de sua fonte de dados a um provedor de dados existente. Por exemplo, se você criar uma interface OData v4 para sua fonte de dados externa, poderá acessá-la diretamente com o provedor de dados OData v4 padrão fornecido, que também suporta operações CRUD. O mecanismo de adição dessa interface REST varia com a tecnologia de serviço de dados subjacente, por exemplo, consulte WCF Data Services 4.5. OData tem amplo suporte da indústria, com uma ampla gama de ferramentas dedicadas e tecnologias compatíveis.
Pré-requisitos
Provedores de dados personalizados exigem recursos de desenvolvimento substanciais para criar e manter. Deve ter conhecimentos fundamentais das seguintes áreas:
- O esquema da fonte de dados externa e as técnicas de acesso a dados associadas. Esse conhecimento de domínio é específico para o tipo de fonte de dados externa.
- Esquema de definição do Dataverse: Mais informações: Utilize definições de tabelas e colunas através de código.
- Dataverse event framework: Mais informações: Event Framework.
- Arquitetura e desenvolvimento de plug-ins do Dataverse: Mais informações: Utilizar plug-ins para expandir processos empresariais.
O Microsoft.Xrm.Sdk.Data.dll assembly está disponível como um pacote NuGet: Microsoft.CrmSdk.Data
Categorias de prestadores
Há duas categorias gerais de provedor de dados que se pode criar usando os assemblies SDK de dados de tabela virtual: genéricas ou específicas. A tabela abaixo descreve essas abordagens e as faz corresponder ao modelo de desenvolvimento do provedor de dados mais adequado para essa abordagem.
| Categoria | Modelo de desenvolvimento | Descrição |
|---|---|---|
| Genérico | Fornecedor "Bare metal" | Esses provedores podem traduzir de forma flexível expressões de consulta FetchXML para a solicitação associada à fonte de dados externa e, em seguida, retornar os registros resultantes. Esse provedor pode ser reutilizado para todas as instâncias desse tipo de fonte de dados. Esta abordagem é a mais geral, mas é mais complicada de desenvolver. Se o esquema da fonte de dados for alterado, as tabelas virtuais afetadas deverão ser apenas remapeadas. |
| Direcionado | Provedor LINQ para esquema conhecido | Esse provedor apenas traduz estritamente as consultas na chamada LINQ associada para uma instância de fonte de dados existente e conhecida. A fonte de dados deve ser um provedor LINQ, conforme descrito no tópico Habilitando uma fonte de dados para consultas LINQ. Essa abordagem é limitada a uma instância específica da fonte de dados, mas requer muito menos codificação. Se o esquema da fonte de dados for alterado, o provedor de dados deverá ser atualizado e reconstruído. |
O Provedor de Dados OData v4 padrão e o Provedor de Dados do Azure Cosmos DB são exemplos de provedores genéricos.
Etapas para usar um provedor de dados personalizado
Há várias etapas necessárias para criar uma solução de provedor de dados de tabela virtual que pode ser importada para seus aplicativos Dataverse:
- Desenvolva uma DLL de plug-in de fornecedor de dados personalizado (ou conjunto de DLLs).
- Registe o fornecedor de dados personalizado com o seu serviço do Dataverse usando a Ferramenta de Registo de Plug-ins (PRT).
- Crie uma solução de provedor de dados.
- Personalize a tabela da fonte de dados para refletir seu tipo de dados ou instância específica.
- Exporte a solução de provedor de dados personalizado.
Para obter mais informações: Exemplo: provedor de tabela virtual personalizada com operações CRUD
Desenvolvimento de plug-ins
Como as tabelas virtuais suportam operações CRUD, você escreverá o provedor de dados na forma de um plug-in registrado nos eventos Create, Update, Retrieve, RetrieveMultiple e Delete . Cada evento respetivo incluirá informações no contexto de execução que descrevem o tipo de dados a serem retornados.
| Event | Contexto de execução |
|---|---|
| Recuperar | Descreve qual tabela recuperar, bem como as colunas e quaisquer tabelas relacionadas a serem incluídas. |
| RecuperarMúltiplo | Contém um QueryExpression objeto que define a consulta. A estrutura contém uma classe QueryExpressionVisitor projetada para inspecionar diferentes partes da árvore de expressões de consulta. |
Para ambos os eventos, você deve:
- Converta as respetivas informações no contexto de execução em uma consulta que funcionará para sua fonte de dados externa.
- Recupere os dados do sistema externo.
- Para Retrieve, converta os dados em um Entity; caso contrário, para RetrieveMultiple, converta-os em um EntityCollection. Esse resultado é retornado através da plataforma Dataverse para o usuário que executa a consulta.
As classes no Microsoft.Xrm.Sdk.Data namespace fornecem uma estrutura para ajudar no mapeamento das informações de consulta Dataverse do contexto de execução em uma consulta no formato apropriado para sua fonte de dados externa. Essa estrutura ajudará você a converter os dados retornados para os tipos apropriados Entity ou EntityCollection esperados pela plataforma Dataverse.
Exceções do provedor de dados
Se, por qualquer motivo, seu código não puder alcançar o resultado esperado, você deve lançar o erro apropriado. O Microsoft.Xrm.Sdk.Data.Exceptions namespace contém as seguintes classes de exceção, derivadas de SdkExceptionBase, que você pode usar para essa finalidade:
| Classe de exceção | Descrição |
|---|---|
| AuthenticationException | Ocorreu um erro durante a autenticação de segurança para o serviço de fonte de dados externa; por exemplo, status HTTP 401 recebido do serviço de dados externo. Normalmente, ocorre porque o usuário atual não tem privilégios adequados ou as informações de conexão no EntityDataSource associado estão incorretas. |
| EndpointException | A configuração do ponto de extremidade na tabela da fonte de dados é inválida ou o ponto de extremidade não existe. |
| GenericDataAccessException | Um erro geral de acesso a dados, usado quando o erro não é mapeado para uma exceção mais específica. |
| InvalidMetadataException | |
| InvalidQueryException | A consulta especificada é inválida; por exemplo, é uma combinação de cláusula inválida ou operador de comparação sem suporte. |
| ObjectNotFoundException | O registro especificado na fonte de dados externa não existe. |
| TimeoutException | A operação externa não foi concluída dentro do prazo permitido; por exemplo, o resultado de um status HTTP 408 do serviço de dados externo. |
Registro de plugin
Ao contrário de um plug-in comum, você usará apenas a PRT (Plug-in Registration Tool) para registrar a montagem e os plug-ins para cada evento. Você não registrará etapas específicas. O seu plug-in será executado na fase 30, a fase principal da transação principal para a operação que não está disponível para os passos comuns do plug-in. Em vez de registrar etapas, você configurará seu provedor de dados usando as tabelas a seguir.
| Tabela | Descrição |
|---|---|
| EntityDataProvider | Define os plug-ins a serem usados para cada evento e o nome lógico da fonte de dados. |
Quando as definições para sua tabela virtual são configuradas, seus plug-ins são registrados usando o PRT e os dados de configuração corretos são definidos na tabela EntityDataProvider , sua tabela virtual começará a responder às solicitações.
Para obter mais informações: Criando provedor de dados e adicionando plug-ins ao provedor
Depuração de plug-ins
Um provedor de tabela virtual personalizado é um tipo de plug-in. Use as informações nestes tópicos para depurar plug-ins para fornecedores de tabela virtual personalizados: Depurar plug-ins e Tutorial: Depurar um plug-in.
Consulte também
Introdução às tabelas virtuais
Considerações da API de tabelas virtuais
Exemplo: Plug-in de fornecedor genérico de dados de tabela virtual