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 |
|
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é |
Extensibilité d'agrégation |
Moyenne |
||
Extensibilité de base |
|
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