Partager via


Vue d'ensemble de l'extensibilité des générateurs de données

Mise à jour : novembre 2007

Vous pouvez utiliserVisual Studio Team System Database Edition pour générer des données significatives à tester. Les générateurs de données intégrés vous permettent de générer des données aléatoires, de générer des données à partir de sources de données existantes et de contrôler de nombreux aspects de la génération de données. Si les fonctionnalités des générateurs intégrés sont insuffisantes, vous pouvez créer des générateurs de données personnalisés. Pour ce faire, vous utilisez les classes de l'espace de noms Microsoft.VisualStudio.TeamSystem.Data.DataGenerator.

API d'extensibilité des générateurs de données

L'API d'extensibilité fournit des classes dont les développeurs peuvent hériter. Outre des classes, l'API inclut des attributs que vous pouvez appliquer à vos classes dérivées. En appliquant ces attributs, vous réduisez la quantité de code qui est requise dans les générateurs personnalisés pour les cas courants.

Pour créer des générateurs de données personnalisés, vous pouvez utiliser l'API d'extensibilité de l'une de quatre façons suivantes :

Extensibilité

Description

Difficulté

Exemple

Extensibilité déclarative

  • Hériter de la classe Generator.

  • Ajouter des propriétés d'entrée et de sortie.

Simple

Générateur de données Integer intégré.

Extensibilité normale

Moyenne. Cette méthode est recommandée dans la plupart des cas.

Procédure pas à pas : création d'un générateur de données personnalisé

Procédure pas à pas : création d'un générateur de données personnalisé pour une contrainte de validation

Extensibilité d'agrégation

  • Hériter de la classe Generator.

  • Ajouter des propriétés d'entrée et de sortie.

  • Substituer une ou plusieurs méthodes Generator.

  • Dans votre classe, créez une ou plusieurs instances des classes du générateur de données standard et utilisez-les pour effectuer le travail.

Moyenne

Procédure pas à pas : création d'un générateur de données personnalisé qui regroupe des générateurs standard

Extensibilité de base

  • Créer une classe qui implémente l'interface IGenerator.

  • Implémenter toutes les méthodes qui sont requises par votre générateur.

  • Créer un concepteur personnalisé pour le générateur qui implémente l'interface IDesigner.

  • Implémenter toutes les méthodes qui sont requises par votre générateur.

Difficile

aucun

Extensibilité d'agrégation

Dans l'extensibilité d'agrégation, vous héritez de la classe Generator de manière classique. Vous créez ensuite une ou plusieurs instances des classes du générateur de données standard. Pour accéder aux classes du générateur standard, vous devez ajouter une référence au fichier Microsoft.VisualStudio.TeamSystem.Data.Generators.dll, lequel se trouve dans ...\Program Files\Microsoft Visual Studio 9.0\DBPro\Extensions.

Extensibilité de base

L'API d'extensibilité de base est le mécanisme par lequel le moteur de génération de données et les concepteurs de plans de génération de données interagissent. Cette API a été conçue pour satisfaire les objectifs suivants :

  • Robustesse : encourager une implémentation cohérente et fiable à la fois dans les moteurs au moment du design et dans les moteurs d'exécution.

  • Souplesse : prendre en charge des générateurs complexes tels que le générateur lié aux données.

Le fait que l'API d'extensibilité de base soit plus complexe que l'API d'extensibilité déclarative de niveau supérieur constitue un compromis de conception qui est implicite dans l'API d'extensibilité de base.

Enregistrement de générateurs de données personnalisés

Avant de pouvoir utiliser votre générateur de données personnalisé, vous devez l'enregistrer sur votre ordinateur. Si vous donnez votre générateur de données personnalisé à d'autres personnes pour qu'elles l'utilisent, ces personnes doivent l'enregistrer sur leur ordinateur. Il est possible d'enregistrer des générateurs de données personnalisés de plusieurs façons :

Méthode

Permissions Required

Exemple

Enregistrer le générateur dans le dossier Assemblys privés.

Utilisateur avec pouvoir ou autorisation supérieure.

Comment : enregistrer des générateurs de données personnalisés

Procédure pas à pas : enregistrement d'un générateur de données personnalisé

Enregistrer le générateur dans le Global Assembly Cache.

Administrateur

aucun

Créer un projet de déploiement pour enregistrer le générateur.

Administrateur

aucun

Générateurs de données, distributions et concepteurs

Vous pouvez créer des générateurs de données personnalisés et des concepteurs personnalisés pour ces générateurs. Vous pouvez également créer des distributions pour des générateurs de données numériques et des concepteurs personnalisés pour ces distributions.

  • Les générateurs de données personnalisés produisent les données de test aléatoires d'après un jeu de règles que vous spécifiez. Vous pouvez utiliser le concepteur par défaut avec ces générateurs ou créer un concepteur personnalisé pour eux en héritant de DefaultGeneratorDesigner. Par exemple, le générateur de données d'expressions régulières est un générateur de données intégré qui utilise un concepteur personnalisé afin de pouvoir procéder à une validation personnalisée des entrées d'utilisateur au moment du design.

  • En utilisant un concepteur de générateur personnalisé, vous pouvez personnaliser comment les propriétés d'entrée et de sortie sont récupérées des paramètres utilisateur, définir les valeurs par défaut et spécifier le comportement de validation.

  • En utilisant une distribution personnalisée, vous pouvez contrôler la distribution des valeurs numériques qu'un générateur de données génère.

  • Les concepteurs de distributions personnalisés contrôlent le comportement au moment du design pour une distribution personnalisée. Ce comportement inclut l'obtention des noms des propriétés d'entrée pour la distribution, la définition des valeurs par défaut des propriétés d'entrée, et la validation des valeurs des propriétés d'entrée pour la distribution.

Générateurs de données et localisation

Les générateurs de données qui sont inclus avec Team Edition for Database Professionals sont localisés parce que Visual Studio est fourni dans plusieurs versions linguistiques. Vous n'avez probablement pas à localiser vos générateurs de données personnalisés. Si vous devez créer un générateur de données qui sera localisé, vous devez créer un concepteur personnalisé. Vous pouvez également substituer la méthode GetInputs pour localiser les noms des propriétés d'entrée.

Remarque   Si possible, vous devez hériter de la classe DefaultGeneratorDesigner, et non pas implémenter l'interface IDesigner, afin d'éviter du travail supplémentaire.

Instanciation de générateurs de données

Les générateurs de données personnalisés peuvent partager des données. La portée des données partagées est le type du générateur et la table SQL. Chaque type de générateur a un dictionnaire d'instances unique pour chaque table SQL. Par exemple, un générateur de données personnalisé pour une table nommée Customers a accès à un dictionnaire partagé. Vous pouvez placer n'importe quelles informations dans le dictionnaire et les partager. L'instance du dictionnaire est obligatoirement la même pour chaque type de générateur et chaque table. Par exemple, vous pouvez créer un générateur de données personnalisé et demander le dictionnaire de GeneratorInit. Vous pouvez ensuite vérifier si le dictionnaire contient des informations partagées. Si tel est le cas, vous pouvez utiliser ces informations pour générer des données. Vous pouvez également créer les informations partagées que d'autres instances de votre générateur peuvent utiliser.

Remarque :

L'instanciation de générateurs est une technique avancée. Vous pouvez l'utiliser pour créer un générateur de données personnalisé qui gère les contraintes de validation à travers les colonnes. Par exemple, une contrainte de validation qui requiert qu'une colonne soit supérieure à une autre colonne.

Processus de génération de données

Les phases de la génération de données sont les suivantes :

Déterminer le type du concepteur

Au moment du design

Cette phase requiert le type du générateur de données comme entrée. Le moteur peut ensuite interroger GeneratorAttribute pour récupérer le type du concepteur. Dans la plupart des cas, GeneratorAttribute est hérité de la classe de base qui spécifie le concepteur par défaut.

Instancier et initialiser le concepteur

Au moment du design

Le concepteur est instancié. Il est initialisé en appelant Initialize et en passant le type du générateur comme argument.

Récupérer les descripteurs d'entrée

Au moment du design

Les InputDescriptor sont récupérés à partir du concepteur. Pour ce faire, le concepteur par défaut récupère toutes les propriétés du générateur de données qui sont marquées avec InputAttribute.

Définir les valeurs par défaut

Au moment du design

Les valeurs par défaut sont définies.

Obtenir les descriptions de la sortie du générateur

Au moment du design

Les OutputDescriptor sont récupérés à partir du concepteur. Le concepteur par défaut utilise des propriétés qui sont marquées avec OutputAttribute pour créer les descriptions qui apparaissent dans la colonne Sortie du générateur de la fenêtre Détails de la colonne.

Instancier le générateur

Au moment de l'exécution

Le générateur de données est instancié en utilisant le constructeur par défaut.

Définir les entrées du générateur

Au moment de l'exécution

Toutes les valeurs d'entrée sont définies dans le générateur de données à partir des descripteurs d'entrée qui sont récupérés du concepteur.

Valider le générateur

Au moment de l'exécution

La méthode ValidateInputs est appelée. Si la validation échoue, le générateur lèvera une exception InputValidationException. Toute exception autre qu'une exception de validation des données est traitée comme une erreur irrécupérable.

Initialiser le générateur

Au moment de l'exécution

La méthode Initialize est appelée. Cette étape permet au générateur de données d'exécuter toute la configuration nécessaire avant la génération de données, par exemple la spécification de la chaîne de connexion pour la base de données cible ou la définition d'une valeur de départ pour le générateur de nombres aléatoires. Cette phase a lieu une fois avant la génération de données.

Exécuter la génération de données

Au moment de l'exécution

Pendant cette phase, de nouveaux résultats sont générés en appelant la méthode GenerateNextValues. Des résultats peuvent être récupérés en utilisant la méthode GetOutputValue. Cette méthode récupère une valeur scalaire à partir du générateur qui correspond à la clé de sortie qui est passée au générateur en tant qu'entrée. Cette phase parcourt les résultats jusqu'à ce que tous les résultats souhaités aient été générés.

Nettoyer

Au moment de l'exécution

Une fois toutes les générations de données terminées, Dispose est appelé pour nettoyer le générateur.

Sécurité

Pour plus d'informations, consultez Sécurité des générateurs de données.

Voir aussi

Tâches

Comment : créer des générateurs de données personnalisés

Procédure pas à pas : création d'un générateur de données personnalisé

Référence

Microsoft.VisualStudio.TeamSystem.Data.DataGenerator

Autres ressources

Création de générateurs de données personnalisés

Procédures pas à pas du générateur de données