Compartir a través de


Proveedores de datos de tabla virtual personalizados

Con el SDK de datos de Microsoft Dataverse, los desarrolladores de .NET tienen la opción de crear proveedores de datos de tabla virtual personalizados para ayudar a integrar tipos de origen de datos externos que no son compatibles con un proveedor de datos existente. Cada proveedor de datos se compone de un conjunto reutilizable de complementos de Dataverse que implementan las operaciones CRUD admitidas. Para cada tabla virtual, también conocida como entidad virtual, los desarrolladores pueden crear complementos y registrarlos para representar cada una de las operaciones de Create, Update, Retrieve, RetrieveMultiple y Delete. En esta sección se proporciona información fundamental sobre los proveedores de datos y los enfoques para desarrollar proveedores personalizados, incluido el código de ejemplo.

Nota:

Como alternativa a la creación de un proveedor de origen de datos personalizado, debe considerar adaptar el origen de datos a un proveedor de datos existente. Por ejemplo, si crea una interfaz OData v4 en el origen de datos externo, puede acceder directamente a ella con el proveedor de datos OData v4 estándar proporcionado, que también admite operaciones CRUD. El mecanismo para agregar esta interfaz REST varía con la tecnología de servicio de datos subyacente, por ejemplo consulte Servicios de datos de WCF 4.5. OData es ampliamente compatible en el sector gracias a una gran variedad de herramientas dedicadas y tecnologías compatibles.

Prerrequisitos

Los proveedores de datos personalizados requieren recursos de desarrollo importantes para crear y mantener. Debe tener conocimiento fundamental de las áreas siguientes:

El Microsoft.Xrm.Sdk.Data.dll ensamblado está disponible como un paquete NuGet: Microsoft.CrmSdk.Data

Categorías de proveedores

Hay dos categorías generales de proveedor de datos que puede crear mediante los ensamblados del SDK de datos de tabla virtual: genéricos o de destino. La tabla siguiente describe estos métodos y los enlaza con el modelo de desarrollo de proveedor de datos más adecuado para cada método.

Categoría Modelo de desarrollo Descripción
Genérico Proveedor "básico" Estos proveedores pueden traducir de forma flexible expresiones de consulta FetchXML a la solicitud asociada al origen de datos externo y, a continuación, devolver los registros resultantes. Este tipo de proveedor puede volver a utilizarse para todas las instancias de este tipo de origen de datos. Este método es el más general, pero es más difícil de desarrollar. Si cambia el esquema del origen de datos, las tablas virtuales afectadas se deben solo remapear.
Específico Proveedor LINQ para esquemas conocidos Un proveedor de este tipo solo traduce las consultas de forma limitada a la llamada LINQ asociada a una instancia de origen de datos existente y conocida. El origen de datos debe ser un proveedor LINQ, tal como se explica en el tema Habilitar un origen de datos para las consultas LINQ. Este método está limitado a una instancia de origen de datos específica, pero requiere mucho menos código. Si cambia el esquema del origen de datos, el proveedor de datos debe actualizarse y generarse de nuevo.

El proveedor de datos OData v4 estándar y el proveedor de datos de Azure Cosmos DB son ejemplos de proveedores genéricos.

Pasos para usar un proveedor de datos personalizado

Hay varios pasos necesarios para crear una solución de proveedor de datos de tabla virtual que se puede importar en las aplicaciones de Dataverse:

  1. Desarrolle el complemento DLL de proveedor de datos personalizado (o conjunto de DLL).
  2. Registre el proveedor de datos personalizado con el servicio Dataverse mediante la herramienta de registro de complementos (PRT).
  3. Cree una solución de proveedor de datos.
  4. Personalice la tabla de origen de datos para reflejar el tipo de datos o una instancia específica.
  5. Exporte la solución de proveedor de datos personalizada.

Más información: Ejemplo: Proveedor de tablas virtuales personalizado con operaciones CRUD

Desarrollo de complementos

Puesto que las tablas virtuales admiten operaciones CRUD, escribirá el proveedor de datos en forma de complemento registrado en los eventos Crear, Actualizar, Recuperar, RetrieveMultiple y Eliminar. Cada evento respectivo incluye información en el contexto de ejecución que describe el tipo de datos a devolver.

Event Contexto de ejecución
Recuperar Describe qué tabla se va a recuperar, así como las columnas y las tablas relacionadas que se van a incluir.
RetrieveMultiple Contiene un QueryExpression objeto que define la consulta. El marco contiene una clase QueryExpressionVisitor diseñada para comprobar diferentes partes del árbol de expresión de consulta.

Para ambos eventos, debe:

  1. Convertir la información respectiva en el contexto de ejecución en una consulta compatible con el origen de datos externos.
  2. Recuperar los datos del sistema externo.
  3. En Recuperar, convierta los datos en un Entity; de lo contrario, para RetrieveMultiple, convierta los datos en un EntityCollection. Este resultado se devuelve a través de la plataforma dataverse al usuario que ejecuta la consulta.

Las clases en el espacio de nombres Microsoft.Xrm.Sdk.Data proporcionan un marco para ayudarle a asignar la información de la consulta de Dataverse desde el contexto de ejecución a una consulta en el formato adecuado para el origen de datos externos. Este marco de trabajo le ayudará a convertir los datos devueltos en los tipos apropiados de Entity o EntityCollection esperados por la plataforma Dataverse.

Excepciones del proveedor de datos

Si por cualquier motivo, el código no logra el resultado previsto, deberá lanzar el error correspondiente. El Microsoft.Xrm.Sdk.Data.Exceptions espacio de nombres contiene las siguientes clases de excepción, derivadas de SdkExceptionBase, que puede usar para este propósito:

Clase de excepción Descripción
AuthenticationException Se ha producido un error durante la autenticación de seguridad en el servicio de origen de datos externos. Por ejemplo: estado HTTP 401 recibido del servicio de datos externos. Normalmente, se produce porque el usuario actual no tiene privilegios adecuados o la información de conexión del EntityDataSource asociado no es correcta.
EndpointException La configuración del punto de conexión de la tabla de origen de datos no es válida o el punto de conexión no existe.
GenericDataAccessException Error de acceso de datos general utilizado cuando el error no encaja con una excepción más específica.
InvalidMetadataException
InvalidQueryException La consulta especificada no es válida. Por ejemplo, una combinación de cláusulas no válida u operador de comparación no compatible.
ObjectNotFoundException El registro especificado en el origen de datos externos no existe.
TimeoutException La operación externa no se completó en el tiempo permitido; por ejemplo, el resultado de un estado HTTP 408 del servicio de datos externo.

Registro de complementos

A diferencia de un complemento normal, solo usará la herramienta de registro de complementos (PRT) para registrar el ensamblado y los complementos para cada evento. No registrará pasos específicos. El complemento se ejecutará en la fase 30, la fase de transacciones centrales principal de la operación que no está disponible para los pasos de complemento normales. En lugar de registrar pasos, configurará el proveedor de datos mediante las siguientes tablas.

Tabla Descripción
EntityDataProvider Define los complementos que se van a usar para cada evento y el nombre lógico del origen de datos.

Cuando se configuran las definiciones de la tabla virtual, los complementos se registran mediante el PRT y los datos de configuración correctos se establecen en la tabla EntityDataProvider , la tabla virtual comenzará a responder a las solicitudes.

Más información: Creación de un proveedor de datos y adición de complementos al proveedor

Depuración de complementos

Un proveedor de tablas virtuales personalizado es un tipo de complemento. Use la información de estos temas para depurar complementos para proveedores de tablas virtuales personalizados: Depuración de complementos y Tutorial: Depuración de un complemento.

Consulte también

Introducción a las tablas virtuales
Consideraciones de API de tablas virtuales
Ejemplo: complemento de proveedor de datos para tablas virtuales genérico