Descripción general de la extensibilidad del Generador de datos
Actualización: noviembre 2007
Puede utilizar Visual Studio Team System Database con el fin de generar datos significativos para las pruebas. Con los generadores de datos integrados puede 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.VisualStudio.TeamSystem.Data.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 cuatro 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. Este método es el recomendado para la mayoría de los casos. |
Tutorial: Crear un generador de datos personalizado Tutorial: Crear un generador de datos personalizado para una restricción CHECK |
Extensibilidad de agregación |
Media |
Tutorial: Crear un generador de datos personalizado que agregue generadores de datos estándar |
|
Extensibilidad base |
|
Difícil |
ninguno |
Extensibilidad de agregación
En la extensibilidad de agregación se hereda de la clase Generator, de la manera habitual. Después se crean una o más instancias de las clases de generador de datos estándar. Para tener acceso a las clases de generador estándar, debe agregar una referencia a Microsoft.VisualStudio.TeamSystem.Data.Generators.dll, que encontrará en ...\Archivos de programa\Microsoft Visual Studio 9.0\DBPro\Extensions.
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 fomentar 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 PrivateAssemblies. |
Usuario avanzado o superior. |
|
Registrar el generador en la caché de ensamblados global. |
Administrador |
ninguno |
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 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 en Team Edition for Database Professionals están localizados, ya que Visual Studio se distribuye 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 localizar los nombres de las propiedades de entrada.
Nota Si es posible, debe heredar de la clase DefaultGeneratorDesigner, no implementar la interfaz IDesigner. Se ahorrará trabajo.
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 SQL. Cada tipo de generador tiene un diccionario de instancia único para cada tabla SQL. 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 usarla para crear un generador de datos personalizado que controle las restricciones CHECK de las columnas. Por ejemplo, una restricción CHECK que requiera 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 |
Se recuperan los descriptores InputDescriptor 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 |
Se recuperan los objetos OutputDescriptor 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. |
Seguridad
Para obtener más información, vea Seguridad de los generadores de datos.
Vea también
Tareas
Cómo: Crear generadores de datos personalizados
Tutorial: Crear un generador de datos personalizado
Referencia
Microsoft.VisualStudio.TeamSystem.Data.DataGenerator