Compartir a través de


Descripción general de la extensibilidad del Generador de datos

Puede usar Visual Studio Premium o Visual Studio Ultimate con el fin de generar datos significativos para las pruebas. Los generadores de datos integrados permiten generar datos aleatorios, generar datos a partir de orígenes de datos existentes y controlar muchos aspectos de la generación de datos. Si la funcionalidad de los generadores integrados no es suficiente, puede crear generadores de datos personalizados. Para crear generadores de datos personalizados, se utilizan las clases del espacio de nombres Microsoft.Data.Schema.Tools.DataGenerator.

La API de extensibilidad de generadores de datos

La API de extensibilidad proporciona clases de las que los programadores pueden heredar. Además de clases, la API incluye atributos que se pueden aplicar a las clases derivadas. Al aplicar estos atributos, reduce la cantidad de código requerido en los generadores personalizados para los casos comunes.

Puede usar la API de extensibilidad de las tres maneras siguientes para crear generadores de datos personalizados:

Extensibilidad

Descripción

Dificultad

Ejemplo

Extensibilidad declarativa

Fácil

El generador de datos Integer integrado

Extensibilidad normal

Media. Se recomienda emplear este método la mayoría de las veces.

Tutorial: Crear un generador de datos personalizado

Tutorial: Crear un generador de datos personalizado para una restricción CHECK

Extensibilidad base

  • Cree una clase que implemente la interfaz IGenerator.

  • Implementar todos los métodos requeridos por el generador.

  • Cree un diseñador personalizado para el generador que implementa la interfaz IDesigner.

  • Implementar todos los métodos requeridos por el diseñador.

Difícil

Ninguno

Extensibilidad base

La API de extensibilidad base es el mecanismo que permite la interacción entre el motor de generación de datos y los diseñadores de planes de generación de datos. Esta API se diseñó con los siguientes objetivos:

  • Solidez, para promover una implementación coherente y sólida en el motor de tiempo de diseño y en el motor de tiempo de ejecución.

  • Flexibilidad, para poder usar generadores complejos como el generador enlazado a datos.

La API de extensibilidad base ofrece un acceso de nivel más bajo, pero a costa de mayor complejidad en comparación con la API de extensibilidad declarativa, que es de nivel más alto.

Registrar generadores de datos personalizado

Para poder usar el generador de datos personalizado, debe registrarlo en su equipo. Si pasa el generador de datos personalizado a otras personas para que lo usen, éstas deberán registrar el generador en sus equipos.

Puede registrar generadores de datos personalizados de las maneras siguientes:

Método

Permisos necesarios

Ejemplo

Registrar el generador en la carpeta Extensions.

Usuario avanzado o superior

Crear un proyecto de implementación para registrar el generador.

Administrador

  • Ninguno

Generadores de datos, distribuciones y diseñadores

Puede crear generadores de datos personalizados y diseñadores personalizados para esos generadores. También puede crear distribuciones personalizadas para los generadores de datos numéricos y diseñadores personalizados para dichas distribuciones.

  • Los generadores de datos personalizados generan datos de pruebas aleatorios según un conjunto de reglas que debe especificar. Puede usar el diseñador predeterminado con dichos generadores o crear un diseñador personalizado que se hereda de DefaultGeneratorDesigner. Por ejemplo, el generador de datos de expresión regular es un generador integrado, pero usa un diseñador personalizado para poder realizar una validación personalizada de las entradas del usuario en tiempo de diseño.

  • Mediante un diseñador de generador personalizado, puede personalizar cómo las propiedades de entrada y salida se recuperan del usuario, se establecen los valores predeterminados y se especifica el comportamiento de la validación.

  • Mediante una distribución personalizada, puede controlar la distribución de valores numéricos creada por un generador de datos.

  • Los diseñadores de distribución personalizada controlan el comportamiento en tiempo de diseño para una distribución personalizada. Este comportamiento incluye obtener los nombres de las propiedades de entrada para la distribución, establecer los valores predeterminados de las propiedades de entrada y validar los valores de las propiedades de entrada para la distribución.

Localización de generadores de datos

Los generadores de datos incluidos con Visual Studio Premium y Visual Studio Ultimate están traducidos porque Visual Studio se ofrece en varios idiomas. Es probable que no tenga que adaptar sus generadores de datos personalizados. Si tuviera que localizar un generador de datos que va a crear, debe crear un diseñador personalizado. También puede reemplazar el método GetInputs para adaptar los nombres de las propiedades de entrada.

Nota

Si es posible, debe heredar de la clase DefaultGeneratorDesigner, no implementar la interfaz IDesigner, para evitar trabajo adicional.

Creación de instancias del generador de datos

Los generadores de datos personalizados pueden compartir datos. El ámbito de los datos compartidos es el tipo de generador y la tabla de base de datos. Cada tipo de generador tiene un diccionario de instancia único para cada tabla de base de datos. Por ejemplo, un generador de datos personalizados para una tabla denominada Clientes tiene acceso a un diccionario compartido. Puede colocar cualquier información en el diccionario y compartir dicha información. Se usará la misma instancia del diccionario para cada tipo de generador y cada tabla. Por ejemplo, puede crear un generador de datos personalizados y solicitar el diccionario de GeneratorInit. A continuación, puede comprobar si el diccionario contiene información compartida. En caso afirmativo, puede usar dicha información para generar datos. También puede crear la información compartida que podrán usar otras instancias del generador.

Nota

La creación de instancias de generador es una técnica avanzada. Puede usar la creación de instancias del generador para crear un generador de datos personalizado que administre las restricciones CHECK en las columnas; por ejemplo, una restricción CHECK que necesita que una columna sea mayor que otra.

El proceso de generación de datos

La generación de datos se produce en las siguientes fases:

Determinar el tipo de diseñador

Tiempo de diseño

Esta fase requiere como entrada el tipo de generador de datos. El motor puede consultar GeneratorAttribute para obtener el valor del tipo de diseñador. En la mayoría de los casos, GeneratorAttribute se hereda de la clase base, que especifica el diseñador predeterminado.

Crear instancias de diseñador e inicializarlas

Tiempo de diseño

Se crea una instancia del diseñador. Se inicializa el diseñador llamando a Initialize y pasando el tipo de generador como argumento.

Recuperar los descriptores de entrada

Tiempo de diseño

InputDescriptor se recupera del diseñador. Para ello, el diseñador predeterminado obtiene todas las propiedades del generador de datos que están marcadas con el atributo InputAttribute.

Establecer los valores predeterminados

Tiempo de diseño

Se establecen los valores predeterminados.

Obtener las descripciones de salida del generador

Tiempo de diseño

OutputDescriptor se recupera del diseñador. El diseñador predeterminado usa las propiedades marcadas con el atributo OutputAttribute para crear las descripciones que aparecen en la columna Resultado del generador de la ventana Detalles de columna.

Crear una instancia del generador

Tiempo de ejecución

Se crea una instancia del generador de datos con el constructor predeterminado.

Establecer las entradas del generador

Tiempo de ejecución

Se establecen todos los valores de entrada en el generador de datos a partir de los descriptores de entrada obtenidos del diseñador.

Validar el generador

Tiempo de ejecución

Se llama al método ValidateInputs. Si se produce un error en la validación, el generador producirá una excepción InputValidationException. Cualquier excepción distinta de una excepción de validación de datos se tratará como un error irrecuperable.

Inicializar el generador

Tiempo de ejecución

Se llama al método Initialize. Este paso permite al generador de datos realizar los ajustes de configuración necesarios, como especificar la cadena de conexión para la base de datos de destino o establecer el valor de inicialización del generador de números aleatorios antes de que se produzca la generación de datos. Esta fase tiene lugar una vez antes de que se generen los datos.

Ejecutar la generación de datos

Tiempo de ejecución

Durante esta fase, se generan nuevos resultados llamando al método GenerateNextValues. Los resultados pueden recuperarse mediante el método GetOutputValue. Este método recupera un valor escalar del generador que corresponde a la clave de salida que se pasa al generador como entrada. Esta fase recorre los resultados hasta que se hayan generado todos los resultados deseados.

Limpiar

Tiempo de ejecución

Una vez completada la generación de datos, se llama a Dispose para limpiar el generador.

Vea también

Tareas

Cómo: Crear generadores de datos personalizados

Tutorial: Crear un generador de datos personalizado

Referencia

Microsoft.Data.Schema.DataGenerator

Conceptos

Generar datos de pruebas especializados con un generador de datos personalizado