Partager via


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

Vous pouvez utiliser des générateurs de données standard pour remplir des colonnes avec des données dans Visual Studio Premium ou Visual Studio Ultimate. Si la colonne que vous souhaitez remplir dépend d'une contrainte de validation, les données avec lesquelles vous remplissez la colonne doivent satisfaire cette contrainte de validation. Les générateurs de données standard peuvent générer des données qui répondent à de nombreuses contraintes de validation. Par exemple, si une contrainte de validation nécessite qu'une date figure dans une certaine plage, vous pouvez utiliser le générateur DateTime standard et définir les propriétés Min et Max pour satisfaire à cette contrainte.

Toutefois, les générateurs de données standard ne peuvent pas répondre à toutes les contraintes de validation. Par exemple, si une contrainte de validation nécessite qu'une date figure dans l'une de deux plages distinctes, vous ne pouvez pas utiliser le générateur DateTime standard. Dans cette procédure pas à pas, vous créerez un générateur de données personnalisé qui peut satisfaire une telle contrainte. Le générateur accepte deux plages comme entrée, puis génère une date aléatoire qui figure dans l'une de ces deux plages.

Dans cette procédure pas à pas, vous exécuterez les tâches suivantes :

  • Créez une classe qui hérite de Generator.

  • Créer des propriétés d'entrée afin que l'utilisateur puisse indiquer les deux plages de dates.

  • Créer une propriété de sortie à utiliser comme sortie de générateur.

  • Substituer la méthode OnInitialize pour donner une valeur de départ aux objets Random et rendre votre générateur déterministe.

  • Substituer la méthode OnGenerateNextValues pour générer les données.

  • Signer le générateur avec un nom fort.

Composants requis

Pour effectuer cette procédure, il est indispensable d'installer Visual Studio Premium ou Visual Studio Ultimate.

Création de la classe du générateur de données personnalisé

Commencez à créer le générateur de données personnalisé en créant une bibliothèque de classes.

Pour créer la classe du générateur de données personnalisé

  1. Dans Visual Studio, créez un projet de bibliothèque de classes dans le langage de votre choix, puis nommez-le GeneratorDateRanges.

  2. Dans le menu Projet, cliquez sur Ajouter une référence.

  3. Sélectionnez l'onglet .NET.

  4. Dans la colonne Nom du composant, repérez les composants suivants :

    • [Microsoft.Data.Schema]

    • [Microsoft.Data.Schema.Sql]

    • [Microsoft.Data.Schema.Tools]

    Conseil

    Appuyez sur CTRL tout en cliquant pour sélectionner plusieurs composants.

  5. Cliquez sur OK lorsque vous avez sélectionné tous les composants requis.

    Les références sélectionnées s'afficheront sous le nœud Références du projet dans l'Explorateur de solutions.

  6. (Facultatif, Visual Basic uniquement) Dans l'Explorateur de solutions, cliquez sur Afficher tous les fichiers, puis développez le nœud Références pour vérifier la nouvelle référence.

  7. Ouvrez le fichier Class1, puis, en haut de la fenêtre Code, avant la déclaration de classe, ajoutez les lignes de code suivantes :

    Imports System.Data.SqlTypes
    Imports Microsoft.Data.Schema.Tools.DataGenerator
    Imports Microsoft.Data.Schema.Extensibility
    Imports Microsoft.Data.Schema
    Imports Microsoft.Data.Schema.Sql
    
    using System.Data.SqlTypes;
    using Microsoft.Data.Schema.Tools.DataGenerator;
    using Microsoft.Data.Schema.Extensibility;
    using Microsoft.Data.Schema;
    using Microsoft.Data.Schema.Sql;
    
  8. Renommez la classe Class1 en GeneratorDateRanges, puis indiquez qu'elle hérite de Generator.

    Avertissement

    Par défaut, le nom que vous donnez à votre classe est le nom qui apparaît dans la liste affichée dans la colonne Générateur de la fenêtre Détails de la colonne. Vous devez spécifier un nom qui ne crée pas de conflit avec le nom d'un générateur standard ou d'un autre générateur personnalisé.

    Public Class GeneratorDateRanges
        Inherits Generator
    
    End Class
    
    public class GeneratorDateRanges: Generator
    {
    }
    
  9. Ajoutez le DatabaseSchemaProviderCompatibilityAttribute, comme indiqué dans l'exemple suivant :

    <DatabaseSchemaProviderCompatibility(GetType(SqlDatabaseSchemaProvider))> _
    Public Class GeneratorDateRanges
        Inherits Generator
    
    End Class
    
    [DatabaseSchemaProviderCompatibility(typeof(SqlDatabaseSchemaProvider))]
    public class GeneratorDateRanges  : Generator
    {
    }
    

    Pour plus d'informations sur l'attribut de compatibilité d'extension, consultez Extension des fonctionnalités de base de données de Visual Studio.

  10. Dans le menu Fichier, cliquez sur Enregistrer tout.

Ajout des propriétés d'entrée

Ce générateur de données personnalisé accepte deux plages de dates comme entrée. Pour spécifier chaque plage, l'utilisateur indique les dates minimales et maximales pour chacune d'elles. Par conséquent, vous devez créer quatre propriétés d'entrée au total : deux dates minimales et deux dates maximales.

Pour ajouter les propriétés d'entrée

  1. Créez quatre variables membres pour contenir les dates minimales et maximales des deux plages de dates :

    Dim range1MinValue As SqlDateTime
    Dim range1MaxValue As SqlDateTime
    
    Dim range2MinValue As SqlDateTime
    Dim range2MaxValue As SqlDateTime
    
    SqlDateTime range1MinValue;
    SqlDateTime range1MaxValue;
    
    SqlDateTime range2MinValue;
    SqlDateTime range2MaxValue;
    
  2. Créez quatre propriétés pour définir les dates minimales et maximales des deux plages de dates. Les propriétés doivent comporter l'InputAttribute pour les identifier comme propriétés d'entrée.

    Notes

    Pour spécifier les propriétés d'entrée pour ce générateur de données dans la fenêtre Propriétés, vous devez fournir un convertisseur de type qui convertit les valeurs d'entrée vers et à partir du type SqlDateTime. Pour ce faire, vous ajouterez une classe de prise en charge SqlDateTimeConverter à une étape ultérieure de cette procédure.

    <Input(TypeConverter:=GetType(SqlDateTimeConverter))> _
    Public Property Range1Min() as SqlDateTime
    
    <Input(TypeConverter:=GetType(SqlDateTimeConverter))> _
    Public Property Range1Max() as SqlDateTime 
    
    <Input(TypeConverter:=GetType(SqlDateTimeConverter))> _
    Public Property Range2Min() as SqlDateTime 
    
    <Input(TypeConverter:=GetType(SqlDateTimeConverter))> _
    Public Property Range2Max() as SqlDateTime 
    
    [Input(TypeConverter = typeof(SqlDateTimeConverter))]
    public SqlDateTime Range1Min
    {
        set {range1MinValue = value;}
        get {return range1MinValue;}
    }
    
    [Input(TypeConverter = typeof(SqlDateTimeConverter))]
    public SqlDateTime Range1Max
    {
        set {range1MaxValue = value;}
        get {return range1MaxValue;}
    }
    
    [Input(TypeConverter = typeof(SqlDateTimeConverter))]
    public SqlDateTime Range2Min
    {
        set {range2MinValue = value;}
        get {return range2MinValue;}
    }
    
    [Input(TypeConverter = typeof(SqlDateTimeConverter))]
    public SqlDateTime Range2Max
    {
        set {range2MaxValue = value;}
        get {return range2MaxValue;}
    }
    
  3. Dans le menu Fichier, cliquez sur Enregistrer tout.

Ajout de la propriété de sortie

Ce générateur de données personnalisé retourne une date aléatoire en tant que sortie. Par conséquent, vous devez créer une propriété de sortie.

Pour ajouter la propriété de sortie

  1. Créez une variable membre pour contenir la date aléatoire qui représente la sortie :

    Dim randomDateValue As SqlDateTime
    
    SqlDateTime randomDateValue;
    
  2. Créez une propriété pour retourner la date aléatoire en tant que sortie. La propriété doit comporter l'OutputAttribute pour l'identifier comme propriété de sortie.

    <Output()> _
    Public ReadOnly Property RandomDate() As SqlDateTime
        Get
            Return randomDateValue
        End Get
    End Property
    
    [Output]
    public SqlDateTime RandomDate
    {
        get {return randomDateValue;}
    }
    
  3. Dans le menu Fichier, cliquez sur Enregistrer tout.

Substitution de la méthode OnInitialize

Lorsque vous générez des données aléatoires, elles peuvent être déterministes ou non déterministes. Les données déterministes répètent les mêmes données chaque fois que vous les générez avec la même valeur de départ. Tous les générateurs de données ont une propriété Seed que l'utilisateur peut définir. Vous pouvez substituer la méthode OnInitialize pour donner une valeur de départ aux objets Random et rendre votre générateur déterministe.

Pour substituer la méthode OnInitialize

  1. Créez deux variables membres pour générer des nombres aléatoires, comme indiqué dans l'exemple suivant. Une variable génère une date aléatoire. L'autre variable effectue un choix aléatoire entre les deux plages de dates possibles.

    Dim random As Random
    Dim randomRange As Random
    
    Random random;
    Random randomRange;
    
  2. Substituez la méthode OnInitialize :

    Protected Overrides Sub OnInitialize(ByVal initInfo As GeneratorInit)
    
        random = New Random(Me.Seed)       'deterministic
        randomRange = New Random(Me.Seed)  'deterministic
    
        'random = New Random()              'non-deterministic
        'randomRange = New Random()         'non-deterministic
    
        MyBase.OnInitialize(initInfo)
    End Sub
    
    protected override void OnInitialize(GeneratorInit initInfo)
    {
        random = new Random(this.Seed);       //deterministic
        randomRange = new Random(this.Seed);  //deterministic
    
        //random = new Random();                //non-deterministic
        //randomRange = new Random();           //non-deterministic
    
        base.OnInitialize(initInfo);
    }
    
  3. Dans le menu Fichier, cliquez sur Enregistrer tout.

Substitution de la méthode OnGenerateNextValues

Visual Studio Premium appelle la méthode OnGenerateNextValues du générateur pour créer les données nécessaires. Vous devez substituer cette méthode pour fournir la logique qui génère la date aléatoire pour la propriété de sortie.

Pour substituer la méthode OnGenerateNextValues

  1. Substituez la méthode OnGenerateNextValues, comme illustré dans l'exemple suivant :

    Protected Overrides Sub OnGenerateNextValues()
    
        Dim min As SqlDateTime
        Dim max As SqlDateTime
    
        'Generate a random date from either range 1 or range 2.
        'Randomly select either range 1 or range 2 by randomly 
        'generating an odd or an even random number.
        '------------------------------------------------------------
        If randomRange.Next() Mod 2 = 0 Then  'check for odd or even
            min = range1MinValue
            max = range1MaxValue
        Else
            min = range2MinValue
            max = range2MaxValue
        End If
    
        'The formula for creating a random number in a specific range is:
        'start of range + (size of range * random number between 0 and 1)
    
        'size of range
        Dim range As TimeSpan = max.Value - min.Value
    
        '(size of range * random number between 0 and 1)
        Dim randomNumber As TimeSpan = New TimeSpan(CLng(range.Ticks * random.NextDouble()))
    
        'start of range + (size of range * random number between 0 and 1)
        randomDateValue = min + randomNumber
    
    End Sub
    
    protected override void OnGenerateNextValues()
    {
        SqlDateTime min;
        SqlDateTime max;
    
        //Generate a random date from either range 1 or range 2.
        //Randomly select either range 1 or range 2 by randomly 
        //generating an odd or an even random number.
        //------------------------------------------------------------
        if (randomRange.Next() % 2 == 0)  //check for odd or even
        {
            min = range1MinValue;
            max = range1MaxValue;
        }
        else
        {
            min = range2MinValue;
            max = range2MaxValue;
        }
    
        //The formula for creating a random number in a specific range is:
        //start of range + (size of range * random number between 0 and 1)
    
        //size of range
        TimeSpan range = max.Value - min.Value;
    
        //(size of range * random number between 0 and 1)
        TimeSpan randomNumber = new TimeSpan((long)(range.Ticks * random.NextDouble()));
    
        //start of range + (size of range * random number between 0 and 1)
        randomDateValue = min + randomNumber;
    }
    
  2. Dans le menu Fichier, cliquez sur Enregistrer tout.

Définition du convertisseur de type

Pour spécifier les propriétés d'entrée pour ce générateur de données dans la fenêtre Propriétés, vous devez fournir un convertisseur de type qui convertit les valeurs d'entrée vers et à partir du type SqlDateTime.

Pour créer la classe de convertisseur de type SqlDateTime

  1. Dans le menu Projet, cliquez sur Ajouter une classe.

    La boîte de dialogue Ajouter un nouvel élément s'affiche alors.

  2. Dans la zone Nom, tapez SqlDateTimeConverter.

  3. En haut de la fenêtre Code, avant la déclaration de classe, ajoutez les lignes de code suivantes :

    Imports System.ComponentModel
    Imports System.Data.SqlTypes
    Imports System.Globalization
    
    using System.ComponentModel;
    using System.Data.SqlTypes;
    using System.Globalization;
    
  4. Spécifiez que votre classe hérite de TypeConverter :

    Public Class SqlDateTimeConverter
        Inherits TypeConverter
    
    End Class
    
    public class SqlDateTimeConverter: TypeConverter
    {
    }
    
  5. Dans la déclaration de classe, ajoutez le constructeur de classe. Si vous écrivez la classe de convertisseur de type dans Visual Basic, passez à l'étape 6.

    public SqlDateTimeConverter()
    {
    }
    
  6. Suivant le constructeur de classe, ajoutez une méthode qui vérifie si une conversion particulière est possible à l'aide de ce convertisseur de type :

    Public Overrides Function CanConvertFrom(ByVal context As ITypeDescriptorContext, ByVal sourceType As Type) As Boolean
        Dim result As Boolean
        result = False
        If (sourceType Is GetType(System.String)) Then
            result = True
        Else
            result = MyBase.CanConvertFrom(context, sourceType)
        End If
        Return result
    End Function 
    
    Public Overrides Function CanConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal destinationType As System.Type) As Boolean
        If (destinationType Is GetType(System.String)) Then
            Return True
        End If
        Return MyBase.CanConvertTo(context, destinationType)
    End Function
    
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        bool result = false;
        if (sourceType == typeof(string))
        {
            result = true;
        }
        else
        {
            result = base.CanConvertFrom(context, sourceType);
        }
        return result;
    }
    
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
    {
        if (destinationType == typeof(string))
        {
            return true;
        }
        return base.CanConvertTo(context, destinationType);
    }
    
  7. Enfin, ajoutez les méthodes du convertisseur :

    Public Overrides Function ConvertFrom(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object) As Object
        Dim dateTimeString As String
        dateTimeString = value.ToString
        If (dateTimeString.Length > 0) Then
            Dim dateTime As Date
            dateTime = Date.Parse(dateTimeString, culture)
            Return New SqlDateTime(dateTime)
        End If
        Return MyBase.ConvertFrom(context, culture, value)
    End Function
    
    Public Overrides Function ConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object, ByVal destinationType As System.Type) As Object
        If (destinationType Is GetType(System.String)) Then
            Dim dateTime As Date
            dateTime = CType(value, SqlDateTime).Value
            Return dateTime.ToString(culture)
        End If
        Return MyBase.ConvertTo(context, culture, value, destinationType)
    End Function
    
            public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
            {
                string dateTimeString = value as string;
                if (dateTimeString != null)
                {
                    DateTime dateTime = DateTime.Parse(dateTimeString, culture);
                    return new SqlDateTime(dateTime);
                }
                return base.ConvertFrom(context, culture, value);
            }
    
            public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
            {
                if (destinationType == typeof(string))
                {
                    DateTime dateTime = ((SqlDateTime)value).Value;
                    return dateTime.ToString(culture);
                }
                return base.ConvertTo(context, culture, value, destinationType);
            }
    
  8. Dans le menu Fichier, cliquez sur Enregistrer tout.

Signature du générateur

Tous les générateurs de données personnalisés doivent être signés avec un nom fort avant d'être inscrits.

Pour signer le générateur avec un nom fort

  1. Dans le menu Projet, cliquez sur Propriétés de GeneratorDateRanges pour ouvrir les propriétés du projet.

  2. Sous l'onglet Signature, activez la case à cocher Signer l'assembly.

  3. Dans la zone Choisir un fichier de clé de nom fort, cliquez sur <Nouveau...>.

  4. Dans la zone Nom du fichier de clé, tapez GeneratorDateRangesKey, tapez et confirmez un mot de passe, puis cliquez sur OK.

    Lorsque vous générez votre solution, le fichier de clé est utilisé pour signer l'assembly.

  5. Dans le menu Fichier, cliquez sur Enregistrer tout.

  6. Dans le menu Générer, cliquez sur Générer la solution.

    Votre générateur de données a maintenant été généré. Vous devez ensuite l'inscrire sur votre ordinateur afin de pouvoir l'utiliser dans des plans de génération de données.

Enregistrement du générateur

Une fois votre assembly signé et compilé, vous allez, à présent, collecter les informations de l'assembly générées dans le projet, notamment la version, la culture et le PublicKeyToken pour faciliter l'enregistrement de l'assembly du générateur.

Pour collecter des informations de l'assembly

  1. Dans le menu Affichage, cliquez sur Autres fenêtres, puis cliquez sur Fenêtre Commande pour ouvrir la fenêtre Commande.

  2. Dans la fenêtre Commande, tapez le code suivant. Pour FilePath, substituez le chemin d'accès et le nom de votre fichier .dll compilé. Placez le chemin d'accès et le nom de fichier entre guillemets.

    Notes

    Par défaut, le chemin d'accès de votre fichier .dll compilé est SampleGenerator\bin\Debug.

    ? System.Reflection.Assembly.LoadFrom("FilePath").FullName
    
    ? System.Reflection.Assembly.LoadFrom(@"FilePath").FullName
    
  3. Appuyez sur Entrée. La ligne doit ressembler à ce qui suit avec votre PublicKeyToken spécifique :

    " GeneratorDateRanges, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nnnnnnnnnnnnnnnn"
    

    Notez ou copiez les informations de cet assembly, car elles seront utilisées dans la procédure suivante.

    Ensuite, vous créez un fichier XML en utilisant les informations d'assembly collectées lors de la procédure précédente.

Pour créer le fichier XML

  1. Dans l'Explorateur de solutions, sélectionnez le projet GeneratorDateRanges.

  2. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  3. Dans le volet Modèles, recherchez et sélectionnez l'élément Fichier XML.

  4. Dans la zone de texte Nom, tapez GeneratorDateRanges.Extensions.xml, puis cliquez sur le bouton Ajouter.

    Le fichier GeneratorDateRanges.Extensions.xml est ajouté au projet dans l'Explorateur de solutions.

    Notes

    Vous devez utiliser le nom de votre DLL (dans ce cas, « GeneratorDateRanges » suivi de « .Extensions.xml ») pour que l'enregistrement de l'assembly se fasse correctement.

  5. Ouvrez le fichier GeneratorDateRanges.Extensions.xml et mettez-le à jour pour qu'il corresponde au fichier XML suivant. Remplacez les données de l'assembly (version, culture et PublicKeyToken) que vous avez extraites au cours de la procédure précédente.

    Notes

    Le type d'extension doit utiliser le nom qualifié complet de la classe. Dans ce cas : type d'extension = « GeneratorDateRanges.GeneratorDateRanges ».

    <?xml version="1.0" encoding="utf-8"?>
    <extensions assembly=""
                version="1" xmlns="urn:Microsoft.Data.Schema.Extensions"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="urn:Microsoft.Data.Schema.Extensions 
    
      Microsoft.Data.Schema.Extensions.xsd"> <extension type="GeneratorDateRanges.GeneratorDateRanges" assembly=" GeneratorDateRanges, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nnnnnnnnnnnnnnnn" enabled="true"/>
    
    </extensions>
    
  6. Dans le menu Fichier, cliquez sur Enregistrer tout.

L'étape suivante vous invite à copier l'assembly et le fichier XML dans le répertoire Extensions. Au démarrage de Visual Studio Premium, celui-ci se charge d'identifier les extensions à l'intérieur du répertoire et des sous-répertoires %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions et de les enregistrer en vue de les utiliser au cours de la session.

Pour copier et enregistrer l'assembly et le fichier XML dans le répertoire Extensions

  1. Créez un dossier appelé CustomGenerators dans le répertoire %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions\.

  2. Copiez le fichier assembly GeneratorDateRanges.dll du répertoire ProjectFolder\GeneratorDateRanges\GeneratorDateRanges\bin\Debug\ vers le répertoire %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions\CustomGenerators que vous avez créé.

  3. Copiez le fichier assembly GeneratorDateRanges.Extensions.xml du répertoire ProjectFolder\GeneratorDateRanges\GeneratorDateRanges\bin\Debug\ vers le répertoire %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions\CustomGenerators que vous avez créé.

    Notes

    Il est recommandé de placer vos assemblys d'extension dans un même dossier au sein du répertoire %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions. Cette stratégie vous aidera à identifier les extensions incluses dans le produit et celles qui correspondent à vos créations personnalisées. Vous devez envisager d'organiser également vos extensions en dossiers spécifiques à la catégorie.

Test du générateur de plages de dates

Maintenant que vous avez créé le générateur de données DateRanges, vous devez démarrer une nouvelle instance de Visual Studio. Lorsque Visual Studio démarrera, il enregistrera l'assembly GeneratorDateRanges auquel vous avez ajouté %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions\CustomGenerators.

Ensuite, vous créerez un projet de base de données dans lequel vous pouvez vérifier que le générateur de données DateRanges fonctionne correctement.

Pour créer le projet de base de données

  1. Démarrez une nouvelle instance de Visual Studio, qui reconnaîtra l'assembly GeneratorDateRanges.dll et l'enregistrera.

  2. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.

    La boîte de dialogue Nouveau projet s'affiche.

  3. Dans la liste Modèles installés, développez Base de données, puis cliquez sur SQL Server.

  4. Dans Modèles, cliquez sur Assistant SQL Server 2008.

  5. Dans Nom, tapez SampleGeneratorDB.

    Notes

    Si vous avez déjà effectué toutes les étapes dans Procédure pas à pas : création d'un générateur de données personnalisé, vous avez déjà créé le projet SampleGeneratorDB, et vous pouvez passer à la procédure suivante, Pour ajouter une table au projet de base de données.

  6. Activez la case à cocher Créer le répertoire pour la solution.

  7. Acceptez les valeurs par défaut pour l'Emplacement, Nom de solution, puis Ajouter au contrôle de code source, et enfin cliquez sur OK.

  8. Cliquez sur Terminer. Lorsque l'Assistant est fini, cliquez encore sur Terminer.

    Le nouveau projet de base de données, SampleGeneratorDB, s'affiche dans l'Explorateur de solutions.

  9. Dans le menu Affichage, cliquez sur Vue Schéma de base de données.

    La vue Schéma s'affiche si elle n'était pas déjà visible.

    Ensuite, vous ajouterez une table simple au projet, avec une colonne unique et un type SQL DateRange.

Pour ajouter une table au projet de base de données

  1. Dans la Vue Schéma, développez le nœud SampleGeneratorDB, puis le nœud Schémas, développez le nœud dbo, puis cliquez sur Tables.

  2. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

    Notes

    Vous pouvez également cliquer avec le bouton droit sur le projet SampleGeneratorDB dans la Vue Schéma, pointer sur Ajouter, puis cliquer sur Table.

  3. Dans Modèles, cliquez sur Table.

    Notes

    Dans la liste Catégories, vous pouvez cliquer sur Tables et vues pour rechercher plus facilement un modèle de table.

  4. Dans la zone Nom, tapez TableDates en tant que nom à attribuer à la nouvelle table.

  5. Cliquez sur Ajouter pour ajouter la table au projet de base de données.

    L'Explorateur de solutions affiche le nouveau fichier pour la table dans votre projet de base de données. La vue Schéma affiche le nouvel objet table. L'éditeur Transact-SQL apparaît et affiche la définition de votre nouvelle table.

  6. Dans l'éditeur Transact-SQL, modifiez la définition de la table afin qu'elle corresponde à l'exemple suivant :

    CREATE TABLE [dbo].[TableDates]
    (
    dates DateTime
    )
    
  7. Dans le menu Fichier, cliquez sur Enregistrer TableDates.table.sql.

Avec la table en place, vous ajouterez maintenant une contrainte de validation pour vérifier que les plages de dates utilisées sont valides.

Notes

Vous entrerez des plages de dates correspondant pour les valeurs de propriétés du générateur de données DateRanges personnalisé dans une autre procédure. Pour plus d'informations, consultez Création et configuration du plan de génération de données.

Pour ajouter une contrainte de validation à la table

  1. Dans la Vue Schéma, développez le nœud Tables, puis cliquez sur la table TableDates.

  2. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  3. Dans Modèles, cliquez sur Contrainte de validation.

    Notes

    Vous pouvez également cliquer avec le bouton droit sur la table Dates dans la Vue Schéma, pointer sur Ajouter, puis cliquer sur Contrainte de validation.

  4. Dans Nom, tapez CheckConstraintDateRanges pour attribuer ce nom à la nouvelle contrainte de validation.

  5. Cliquez sur Ajouter pour ajouter la contrainte de validation à votre projet de base de données.

    L'Explorateur de solutions affiche le nouveau fichier pour la contrainte de validation dans votre projet de base de données. La Vue Schéma affiche le nouvel objet de contrainte de validation. L'éditeur Transact-SQL apparaît et affiche la définition de votre nouvelle contrainte de validation.

  6. Dans l'éditeur Transact-SQL, modifiez la contrainte de validation afin qu'elle corresponde à l'exemple suivant :

    ALTER TABLE [dbo].[TableDates]
    ADD CONSTRAINT [CheckConstraintDateRanges] 
    CHECK ((dates BETWEEN '1/1/1800' AND '1/1/1900')OR(dates BETWEEN '1/1/1979' AND '12/31/2008'))
    
  7. Dans le menu Fichier, cliquez sur Enregistrer Dates.CheckConstraintDateRanges.chkconst.sql.

    Notes

    Si vous avez déjà effectué toutes les étapes dans Procédure pas à pas : création d'un générateur de données personnalisé, vous pouvez passer à la section Création et configuration du plan de génération de données.

Avec la table et la contrainte de validation en place, vous pouvez maintenant configurer la base de données pour le déploiement.

Pour configurer les paramètres de déploiement du projet

  1. Dans l'Explorateur de solutions, cliquez sur SampleGeneratorDB (le projet, pas la solution).

  2. Dans le menu Projet, cliquez sur Propriétés SampleGeneratorDB.

    La fenêtre Propriétés du projet s'affiche.

    Notes

    Vous pouvez également cliquer avec le bouton droit sur SampleGeneratorDB dans l'Explorateur de solutions, puis cliquer sur Propriétés.

  3. Cliquez sur l'onglet Déployer.

  4. Dans la liste Déployer une action, cliquez sur Créer un script de déploiement (.sql) et le déployer vers la base de données.

  5. Cliquez sur le bouton Modifier pour spécifier la connexion cible.

  6. Spécifiez les informations de connexion au serveur de base de données vers lequel vous souhaitez déployer la base de données SampleGeneratorDB.

  7. Dans Sélectionner ou entrer un nom de base de données, tapez SampleGeneratorDB.

  8. Cliquez sur OK.

    Connexion cible est rempli avec la chaîne de connexion. Notez que le Nom de la base de données cible a la valeur SampleGeneratorDB.

  9. Acceptez les valeurs par défaut pour les autres options.

  10. Dans le menu Fichier, cliquez sur Enregistrer les éléments sélectionnés.

    Les paramètres de génération du projet sont enregistrés.

    Ensuite, vous générerez votre projet de base de données.

Pour générer le projet de base de données

  • Dans le menu Générer, cliquez sur Générer la solution.

    Votre projet de base de données est généré. En cas de réussite, le message « La génération a réussi » est visible dans la barre d'état, et les résultats de la génération sont affichés dans la fenêtre Sortie.

    Ensuite, vous déploierez votre projet de base de données.

Pour déployer le projet de base de données vers le serveur de base de données.

  1. Dans l'Explorateur de solutions, cliquez sur SampleGeneratorDB (le projet, pas la solution).

  2. Dans le menu Générer, cliquez sur Déployer SampleGeneratorDB.

    Votre projet de base de données est déployé en utilisant la connexion que vous avez spécifiée dans la configuration de build. En cas de réussite, le message « Déploiement terminé » apparaît dans la barre d'état et dans la fenêtre Sortie.

Création et configuration du plan de génération de données

Ensuite, vous créerez le plan de génération de données. Le plan de génération de données contient les informations sur les tables et les colonnes que vous souhaitez remplir de données. Pour plus d'informations, consultez Comment : créer des plans de génération de données.

Pour créer et configurer le plan de génération de données

  1. Dans l'Explorateur de solutions, sélectionnez le nœud Plans de génération de données.

  2. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  3. Dans le volet Catégories, cliquez sur Plan de génération de données.

  4. Dans le volet Modèles, cliquez sur Plan de génération de données.

  5. Dans la zone de texte Nom, tapez SampleGenerator.dgen.

  6. Cliquez sur Ajouter.

    Le plan de génération de données est créé. Le plan de génération de données et la fenêtre Aperçu de la génération de données s'affichent. La fenêtre du plan de génération de données est divisée horizontalement en deux volets. Le volet supérieur répertorie les tables définies dans le schéma de projet de base de données, dans ce cas, la table dbo.TableDates. Le volet inférieur affiche les détails de la colonne pour la table mise en surbrillance dans le volet supérieur, dans ce cas, la colonne d'adresse.

    Notes

    Si la fenêtre Aperçu de la génération de données n'est pas ouverte, vous pouvez l'ouvrir en ouvrant le menu Données, en pointant sur Générateur de données, puis en cliquant sur le nom de la fenêtre Afficher un aperçu de la génération de données. Par défaut, la fenêtre Aperçu de la génération de données est ancrée et affiche des onglets au bas de la fenêtre du plan de génération de données. Pour développer la vue, cliquez sur la fenêtre, puis sur Document avec onglet dans le menu Fenêtre. Vous pouvez également cliquer avec le bouton droit dans la barre de titre, puis cliquer sur Ancrer en tant que document avec onglet.

  7. Dans le concepteur SampleGenerator.dgen, vérifiez que la table dbo.TableDates et la colonne de dates sont activées.

  8. Dans la table, affectez 500 à la valeur sous Lignes à insérer.

  9. Dans le concepteur SampleGenerator.dgen, sélectionnez la colonne dates, puis cliquez sur le Générateur déroulant pour sélectionner le GeneratorDateRanges.

  10. Avec la colonne de dates sélectionnée, dans la fenêtre Propriétés, tapez les valeurs pour les deux entrées de plage de dates :

    • Range1Max 12/31/2008 12:00:00 AM

    • Range1Min 1/1/1979 12:00:00 AM

    • Range2Max 1/1/1900 12:00:00 AM

    • Range2Min 1/1/1800 12:00 AM

    Votre générateur d'adresses personnalisé est maintenant configuré correctement.

  11. Dans le menu Fichier, cliquez sur Enregistrer tout.

Exécution du plan de génération de données pour générer des données de plages de dates

Enfin, vous exécuterez le plan de génération de données et consulterez votre générateur de données de plages de dates personnalisé en action.

Pour exécuter le plan pour générer les données

  1. Dans l'Explorateur de solutions, cliquez sur SampleGenerator.dgen.

    Notes

    Le plan de génération de données doit être ouvert. Si le plan n'est pas ouvert, ouvrez-le d'abord.

  2. Dans le menu Données, pointez sur Générateur de données, puis cliquez sur Générer les données.

    La boîte de dialogue Se connecter à la base de données s'affiche.

  3. Dans la liste Informations de connexion de génération de données, cliquez sur la base de données SampleGeneratorDB, puis sur OK.

  4. Cliquez sur Oui lorsque vous êtes invité à effacer le contenu des tables avant d'insérer de nouvelles lignes.

    Les données sont générées. Dans la fenêtre Remplissage, la colonne d'état est mise à jour selon l'état de la génération de données. La barre d'état résume la génération de données pour toutes les tables.

  5. (Facultatif) Utilisez un outil différent pour vous connecter à la base de données. Vous pouvez utiliser l'éditeur Transact-SQL fourni dans Visual Studio Premium pour cette étape. Pour plus d'informations, consultez Editing Database Scripts and Objects with the Transact-SQL Editor sur le site Web de Microsoft. Affichez les nouvelles données en exécutant la requête suivante :

    use SampleGeneratorDB
    
    select * from dbo.TableDates
    

    L'onglet Résultats doit afficher les 500 dates résultantes.

  6. (Facultatif) Dans la fenêtre Propriétés, affectez la valeur 12/31/3000 12:00:00 AM à Range1Max et exécutez encore le générateur de données en répétant les étapes 2 à 5.

    Dans la fenêtre Liste d'erreurs, vous consulterez une erreur générée par la violation de la contrainte de validation, provoquée par la plage de dates qui est modifiée avec des valeurs situées en dehors de la plage autorisée.

Voir aussi

Tâches

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

Comment : inscrire et gérer des extensions de fonctionnalité

Référence

Microsoft.Data.Schema.Tools.DataGenerator

Concepts

Générer des données de test spécialisées à l'aide d'un générateur de données personnalisé

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

Spécifier les détails de génération de données pour une colonne

Autres ressources

Résolution des problèmes liés aux extensions de fonctionnalités

Historique des modifications

Date

Historique

Motif

Décembre 2010

Résolution d'une erreur de code, en réponse à des commentaires client.

Commentaires client.