Partager via


Generator, classe

Représente la classe de base abstraite des générateurs de données.

Hiérarchie d'héritage

System.Object
  Microsoft.Data.Schema.Tools.DataGenerator.Generator

Espace de noms :  Microsoft.Data.Schema.Tools.DataGenerator
Assembly :  Microsoft.Data.Schema.Tools (dans Microsoft.Data.Schema.Tools.dll)

Syntaxe

'Déclaration
<GeneratorAttribute(GetType(DefaultGeneratorDesigner))> _
<CLSCompliantAttribute(True)> _
Public MustInherit Class Generator _
    Implements IGenerator, IDisposable, IExtensionInformation, IExtension
[GeneratorAttribute(typeof(DefaultGeneratorDesigner))]
[CLSCompliantAttribute(true)]
public abstract class Generator : IGenerator, 
    IDisposable, IExtensionInformation, IExtension
[GeneratorAttribute(typeof(DefaultGeneratorDesigner))]
[CLSCompliantAttribute(true)]
public ref class Generator abstract : IGenerator, 
    IDisposable, IExtensionInformation, IExtension
[<AbstractClass>]
[<GeneratorAttribute(typeof(DefaultGeneratorDesigner))>]
[<CLSCompliantAttribute(true)>]
type Generator =  
    class
        interface IGenerator
        interface IDisposable
        interface IExtensionInformation
        interface IExtension
    end
public abstract class Generator implements IGenerator, IDisposable, IExtensionInformation, IExtension

Le type Generator expose les membres suivants.

Constructeurs

  Nom Description
Méthode protégée Generator Appelée à partir des constructeurs dans les classes dérivées pour initialiser la classe Generator.

Début

Propriétés

  Nom Description
Propriété publique Collation Obtient ou définit le classement, ou tri linguistiquement approprié, de cette colonne.
Propriété publique Column Obtient ou définit la colonne.
Propriété publique ColumnName Obtient ou définit le nom de la colonne.
Propriété publique Constraints Obtient ou définit les informations de contrainte de validation pour la colonne.
Propriété publique DefaultLocaleId Obtient ou définit l'ID de paramètres régionaux.
Propriété publique DefaultValue Obtient ou définit la valeur par défaut de la colonne.
Propriété publique ExtensionHandle Obtient le handle d'extension.
Propriété publique MaxLength Obtient ou définit la longueur maximale des valeurs dans cette colonne.
Propriété publique Nullable Obtient ou définit une valeur qui indique si la valeur nullune référence null (Nothing en Visual Basic) peut être affectée à cette colonne.
Propriété publique OutputKey Obtient ou définit la clé utilisée pour récupérer les valeurs de sortie.
Propriété publique PercentageNull Obtient ou définit le pourcentage des valeurs générées pour cette colonne (l'utilisateur souhaite qu'il soit nullune référence null (Nothing en Visual Basic)).Le pourcentage est exprimé sous la forme d'un entier situé entre 0 et 100.
Propriété publique Precision Obtient ou définit la précision des données.
Propriété publique RowsToInsert Obtient ou définit le nombre de lignes à générer.
Propriété publique Scale Obtient ou définit l'échelle des données.
Propriété publique SchemaName Obtient ou définit le nom du schéma auquel appartient la colonne.
Propriété publique Seed Obtient ou définit la valeur de départ.Vous pouvez utiliser la valeur de départ pour initialiser un algorithme de génération de données aléatoires déterministes.
Propriété publique TableName Obtient ou définit le nom de la table à laquelle appartient la colonne.
Propriété publique TargetType Obtient ou définit le type de données cible de la colonne.
Propriété publique Unique Obtient ou définit une valeur qui indique si la colonne qui est générée fait partie d'une contrainte unique ou d'une contrainte de clé primaire.

Début

Méthodes

  Nom Description
Méthode publique Dispose() Libère toutes les ressources utilisées par Generator.
Méthode protégée Dispose(Boolean) Libère les ressources non managées utilisées par Generator et libère les éventuelles ressources managées.
Méthode publique Equals Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode protégée Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique GenerateNextValues Génère la valeur suivante en fonction de l'algorithme de génération de données.
Méthode publique GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique GetOutputValue Récupère une valeur de sortie en utilisant la OutputKey.
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique Initialize Initialise le générateur de données.
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode protégée OnGenerateNextValues Génère la valeur suivante en fonction de l'algorithme de génération de données.
Méthode protégée OnGetOutputValue Récupère le jeu de résultats actuel qui se compose d'une ou de plusieurs valeurs.
Méthode protégée OnInitialize Initialise le générateur.
Méthode protégée OnNextValues Génère le jeu de valeurs suivant pour une ligne de données.
Méthode protégée OnSetInputValues Définit les propriétés d'entrée d'un générateur de données à l'aide de la liste de valeurs nommées fournie.
Méthode protégée OnValidateInputs Vérifie que toutes les entrées requises sur le générateur de données ont été définies.
Méthode publique SetExtensionHandle Définit le handle d'extension à l'aide du handle d'extension spécifié.
Méthode publique SetInputValues Définit les valeurs d'entrée pour un générateur de données.
Méthode publique ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Méthode publique ValidateInputs Vérifie que toutes les entrées requises sur le générateur de données ont été définies.

Début

Notes

Si les générateurs de données standard sont insuffisants, vous pouvez créer des générateurs de données personnalisés. Pour créer un générateur de données personnalisé, vous devez créer une classe qui implémente IGenerator ou hérite de Generator. Vous identifiez la classe comme générateur de données en la décorant avec l'GeneratorAttribute.

Vous pouvez créer un concepteur personnalisé pour un générateur de données personnalisé, ou vous pouvez utiliser DefaultGeneratorDesigner.

L'implémentation de la classe de base construit des sorties en fonction des propriétés publiques qui sont marquées avec OutputAttribute. Les entrées sont définies en utilisant l'InputAttribute. L'utilisation de propriétés marquées avec des attributs fournit un mécanisme simple pour déclarer des valeurs d'entrée et de sortie fortement typées.

Exemples

Les générateurs de données standard ne peuvent pas générer de données qui répondent à certaines contraintes de validation. Par exemple, une contrainte de validation qui requiert qu'une date se trouve dans l'une de deux plages distinctes ne peut pas utiliser le générateur DateTime standard. Cet exemple crée un générateur de données personnalisé qui peut satisfaire à une telle contrainte. Le générateur accepte deux plages distinctes comme entrée, puis génère une date aléatoire qui figure dans l'une des deux plages. Pour plus d'informations, consultez Procédure pas à pas : création d'un générateur de données personnalisé pour une contrainte de validation.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualStudio.TeamSystem.Data.DataGenerator;

namespace GeneratorDateRangesCS
{
    public class GeneratorDateRangesCS : Generator
    {
        DateTime mRange1Min;
        DateTime mRange1Max;

        DateTime mRange2Min;
        DateTime mRange2Max;

        [Input]
        public DateTime Range1Min
        {
            set {mRange1Min = value;}
        }

        [Input]
        public DateTime Range1Max
        {
            set {mRange1Max = value;}
        }

        [Input]
        public DateTime Range2Min
        {
            set {mRange2Min = value;}
        }

        [Input]
        public DateTime Range2Max
        {
            set {mRange2Max = value;}
        }

        DateTime mRandomDate;

        [Output]
        public DateTime RandomDate
        {
            get {return mRandomDate;}
        }

        Random mRandom;
        Random mRandomRange;

        protected override void OnInitialize(GeneratorInit initInfo)
        {
            // Deterministic
            mRandom = new Random(this.Seed);
            mRandomRange = new Random(this.Seed);  //deterministic

            // Non-deterministic
            //mRandom = new Random();
            //mRandomRange = new Random();

            base.OnInitialize(initInfo);
        }

        protected override void OnGenerateNextValues()
        {
            DateTime min;
            DateTime 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 (mRandomRange.Next() % 2 == 0)  //check for odd or even
            {
                min = mRange1Min;
                max = mRange1Max;
            }
            else
            {
                min = mRange2Min;
                max = mRange2Max;
            }

            // The formula for creating a random number in a specific
            // range is: of range + (size of range * random number 
            // between 0 and 1)

            //size of range
            TimeSpan range = max - min;

            // (Size of range * random number between 0 and 1)
            TimeSpan randomNumber = new TimeSpan(
                (long)(range.Ticks * mRandom.NextDouble()));

            // Start of range + (size of range * random number 
            // between 0 and 1)
            mRandomDate = min + randomNumber;
        }
    } // End of class
}     // End of namespace
Imports Microsoft.VisualStudio.TeamSystem.Data.DataGenerator

Public Class GeneratorDateRangesVB
    Inherits Generator

    Dim mRange1Min As Date
    Dim mRange1Max As Date

    Dim mRange2Min As Date
    Dim mRange2Max As Date

    <Input()> _
    Public WriteOnly Property Range1Min() As Date
        Set(ByVal value As Date)
            mRange1Min = value
        End Set
    End Property

    <Input()> _
    Public WriteOnly Property Range1Max() As Date
        Set(ByVal value As Date)
            mRange1Max = value
        End Set
    End Property

    <Input()> _
    Public WriteOnly Property Range2Min() As Date
        Set(ByVal value As Date)
            mRange2Min = value
        End Set
    End Property

    <Input()> _
    Public WriteOnly Property Range2Max() As Date
        Set(ByVal value As Date)
            mRange2Max = value
        End Set
    End Property

    Dim mRandomDate As Date

    <Output()> _
    Public ReadOnly Property RandomDate() As Date
        Get
            Return mRandomDate
        End Get
    End Property

    Dim mRandom As Random
    Dim mRandomRange As Random

    Protected Overrides Sub OnInitialize(ByVal initInfo _
        As GeneratorInit)

        mRandom = New Random(Me.Seed)       'deterministic
        mRandomRange = New Random(Me.Seed)  'deterministic

        'mRandom = New Random()              'non-deterministic
        'mRandomRange = New Random()         'non-deterministic

        MyBase.OnInitialize(initInfo)
    End Sub

    Protected Overrides Sub OnGenerateNextValues()
        Dim min As Date
        Dim max As Date

        ' 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 mRandomRange.Next() Mod 2 = 0 Then  'check for odd or even
            min = mRange1Min
            max = mRange1Max
        Else
            min = mRange2Min
            max = mRange2Max
        End If

        ' The formula for creating a random number in a specific 
        ' range is: of range + (size of range * random number 
        ' between 0 and 1)

        ' Size of range
        Dim range As TimeSpan = max - min

        ' (Size of range * random number between 0 and 1)
        Dim randomNumber As TimeSpan = _
            New TimeSpan(CLng(range.Ticks * mRandom.NextDouble()))

        ' Start of range + (size of range * random number 
        ' between 0 and 1)
        mRandomDate = min + randomNumber
    End Sub
End Class

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Voir aussi

Référence

Microsoft.Data.Schema.Tools.DataGenerator, espace de noms

GeneratorAttribute

GeneratorInit

IGenerator

Autres ressources

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

Creating Custom Data Generators

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

Specifying Details of Data Generation for a Column