Generator-Klasse

Stellt die abstrakte Basisklasse für Datengeneratoren dar.

Vererbungshierarchie

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

Namespace:  Microsoft.Data.Schema.Tools.DataGenerator
Assembly:  Microsoft.Data.Schema.Tools (in Microsoft.Data.Schema.Tools.dll)

Syntax

'Declaration
<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

Der Generator-Typ macht die folgenden Member verfügbar.

Konstruktoren

  Name Beschreibung
Geschützte Methode Generator Wird von Konstruktoren in abgeleiteten Klassen aufgerufen, um die Generator-Klasse zu initialisieren.

Zum Seitenanfang

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft Collation Ruft die Sortierreihenfolge oder linguistisch korrekte Sortierung dieser Spalte ab oder legt diese fest.
Öffentliche Eigenschaft Column Ruft die Spalte ab oder legt diese fest.
Öffentliche Eigenschaft ColumnName Ruft den Spaltennamen ab oder legt diesen fest.
Öffentliche Eigenschaft Constraints Ruft die CHECK-Einschränkungsinformationen für die Spalte ab oder legt diese fest.
Öffentliche Eigenschaft DefaultLocaleId Ruft die Gebietsschema-ID ab oder legt sie fest.
Öffentliche Eigenschaft DefaultValue Ruft den Standardwert der Spalte ab oder legt diesen fest.
Öffentliche Eigenschaft ExtensionHandle Ruft das Erweiterungshandle ab.
Öffentliche Eigenschaft MaxLength Ruft die maximale Länge für Werte in dieser Spalte ab oder legt diese fest.
Öffentliche Eigenschaft Nullable Ruft einen Wert ab, der angibt, ob diese Spalte auf nullNULL-Verweis (Nothing in Visual Basic) festgelegt werden kann, oder legt einen Wert fest.
Öffentliche Eigenschaft OutputKey Ruft den Schlüssel ab, mit dem Ausgabewerte abgerufen werden, oder legt ihn fest.
Öffentliche Eigenschaft PercentageNull Ruft den Prozentwert der generierten Werte für diese Spalte ab, die nach Wunsch des Benutzers nullNULL-Verweis (Nothing in Visual Basic) sein sollen, oder legt diesen fest.Der Prozentwert wird als ganze Zahl zwischen 0 und 100 angegeben.
Öffentliche Eigenschaft Precision Ruft die Genauigkeit der Daten ab oder legt diese fest.
Öffentliche Eigenschaft RowsToInsert Ruft die Anzahl der zu generierenden Zeilen ab oder legt diese fest.
Öffentliche Eigenschaft Scale Ruft die Skalierung der Daten ab oder legt diese fest.
Öffentliche Eigenschaft SchemaName Ruft den Namen des Schemas ab, zu dem die Spalte gehört, oder legt einen Namen fest.
Öffentliche Eigenschaft Seed Ruft den Startwert ab oder legt ihn fest.Sie können den Startwert verwenden, um einen Algorithmus für die Generierung deterministischer Zufallsdaten zu initialisieren.
Öffentliche Eigenschaft TableName Ruft den Namen der Tabelle ab, zu der die Spalte gehört, oder legt einen Namen fest.
Öffentliche Eigenschaft TargetType Ruft den Zieldatentyp der Spalte ab bzw. legt diesen fest.
Öffentliche Eigenschaft Unique Ruft einen Wert ab, der angibt, ob die generierte Spalte Teil einer UNIQUE- oder PRIMARY KEY-Einschränkung ist, oder legt einen Wert fest.

Zum Seitenanfang

Methoden

  Name Beschreibung
Öffentliche Methode Dispose() Gibt alle vom Generator verwendeten Ressourcen frei.
Geschützte Methode Dispose(Boolean) Gibt die von Generator verwendeten nicht verwalteten Ressourcen und optional auch die verwalteten Ressourcen frei.
Öffentliche Methode Equals Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche Methode GenerateNextValues Generiert den nächsten Wert entsprechend dem Datengenerierungsalgorithmus.
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche Methode GetOutputValue Ruft mit dem OutputKey einen Ausgabewert ab.
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode Initialize Initialisiert den Datengenerator.
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte Methode OnGenerateNextValues Generiert den nächsten Wert entsprechend dem Datengenerierungsalgorithmus.
Geschützte Methode OnGetOutputValue Ruft den aktuellen Satz von Ergebnissen ab, der aus einem oder mehreren Werten besteht.
Geschützte Methode OnInitialize Initialisiert den Generator.
Geschützte Methode OnNextValues Generiert den nächsten Satz von Werten für eine Datenzeile.
Geschützte Methode OnSetInputValues Legt die Eingabeeigenschaften eines Daten-Generators mithilfe der bereitgestellten Liste benannter Werte fest.
Geschützte Methode OnValidateInputs Überprüft, ob alle erforderlichen Eingaben für den Datengenerator festgelegt wurden.
Öffentliche Methode SetExtensionHandle Legt das Erweiterungshandle mithilfe des angegebenen Erweiterungshandles fest.
Öffentliche Methode SetInputValues Legt die Eingabewerte für einen Datengenerator fest.
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Öffentliche Methode ValidateInputs Überprüft, ob alle erforderlichen Eingaben für den Datengenerator festgelegt wurden.

Zum Seitenanfang

Hinweise

Wenn die Standarddatengeneratoren nicht ausreichen, können Sie benutzerdefinierte Datengeneratoren erstellen. Um einen benutzerdefinierten Datengenerator zu erstellen, müssen Sie eine Klasse erstellen, die IGenerator implementiert oder von Generator erbt. Sie identifizieren die Klasse als Datengenerator, indem Sie sie mit GeneratorAttribute ergänzen.

Sie können einen benutzerdefinierten Designer für einen benutzerdefinierten Datengenerator erstellen oder DefaultGeneratorDesigner verwenden.

Die Basisklassenimplementierung erstellt Ausgaben, die auf den öffentlichen Eigenschaften basieren, die mit dem OutputAttribute gekennzeichnet sind. Die Eingaben werden mit dem InputAttribute festgelegt. Mit Attributen gekennzeichnete Eigenschaften bieten ein einfaches Verfahren zur Deklaration strikt typisierter Eingabe- und Ausgabewerte.

Beispiele

Die Standarddatengeneratoren können keine Daten generieren, um einige CHECK-Einschränkungen zu erfüllen. Wenn z. B. eine CHECK-Einschränkung erfordert, dass ein Datum in einem von zwei verschiedenen Bereichen liegt, können Sie nicht den DateTime-Standardgenerator verwenden. In diesem Beispiel wird ein benutzerdefinierter Datengenerator erstellt, der einer solchen Bedingung entspricht. Der Generator akzeptiert zwei unterschiedliche Bereiche als Eingabe und generiert ein Zufallsdatum, das in einem der beiden Bereiche liegt. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Daten-Generators für eine CHECK-Einschränkung.

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

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Referenz

Microsoft.Data.Schema.Tools.DataGenerator-Namespace

GeneratorAttribute

GeneratorInit

IGenerator

Weitere Ressourcen

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Daten-Generators für eine CHECK-Einschränkung

Creating Custom Data Generators

Übersicht über die Erweiterbarkeit von Daten-Generatoren

Specifying Details of Data Generation for a Column