Compartilhar via


Classe Generator

Representa a classe base abstrata para geradores de dados.

Hierarquia de herança

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

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

Sintaxe

'Declaração
<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

O tipo Generator expõe os membros a seguir.

Construtores

  Nome Descrição
Método protegido Generator Chamado a partir de construtores de classes derivadas para inicializar o Generator classe.

Início

Propriedades

  Nome Descrição
Propriedade pública Collation Obtém ou define o agrupamento ou classificação lingüisticamente apropriadas desta coluna.
Propriedade pública Column Obtém ou define a coluna.
Propriedade pública ColumnName Obtém ou define o nome da coluna.
Propriedade pública Constraints Obtém ou define as informações de restrição de verificação para a coluna.
Propriedade pública DefaultLocaleId Obtém ou define a identificação de localidade.
Propriedade pública DefaultValue Obtém ou define o valor padrão da coluna.
Propriedade pública ExtensionHandle Obtém o identificador de extensão.
Propriedade pública MaxLength Obtém ou define o comprimento máximo de valores nesta coluna.
Propriedade pública Nullable Obtém ou define um valor que indica se esta coluna pode ser definida nulluma referência nula (Nothing no Visual Basic).
Propriedade pública OutputKey Obtém ou define a chave que é usada para recuperar valores de saída.
Propriedade pública PercentageNull Obtém ou define a porcentagem dos valores para esta coluna em que o usuário quer ser gerados nulluma referência nula (Nothing no Visual Basic).A porcentagem é expressa como um número inteiro entre 0 e 100.
Propriedade pública Precision Obtém ou define a precisão dos dados.
Propriedade pública RowsToInsert Obtém ou define o número de linhas para gerar.
Propriedade pública Scale Obtém ou define a escala dos dados.
Propriedade pública SchemaName Obtém ou define o nome do esquema ao qual a coluna pertence.
Propriedade pública Seed Obtém ou define a semente.Você pode usar a semente para inicializar um algoritmo de geração de determinista dados aleatórios.
Propriedade pública TableName Obtém ou define o nome da tabela à qual a coluna pertence.
Propriedade pública TargetType Obtém ou define o tipo de dados de destino da coluna.
Propriedade pública Unique Obtém ou define um valor que indica se a coluna que é gerada é parte de uma restrição exclusiva ou uma restrição de chave primária.

Início

Métodos

  Nome Descrição
Método público Dispose() Libera todos os recursos usados pelo Generator.
Método protegido Dispose(Boolean) Libera os recursos não gerenciados usados pela Generator e, opcionalmente, libera os recursos gerenciados.
Método público Equals Determina se o especificado Object é igual a atual Object. (Herdado de Object.)
Método protegido Finalize Permite que um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele é recuperado pela coleta de lixo. (Herdado de Object.)
Método público GenerateNextValues Gera o próximo valor, de acordo com o algoritmo de geração de dados.
Método público GetHashCode Serves as a hash function for a particular type. (Herdado de Object.)
Método público GetOutputValue Recupera um valor de saída usando o OutputKey.
Método público GetType Obtém o Type da instância atual. (Herdado de Object.)
Método público Initialize Inicializa o gerador de dados.
Método protegido MemberwiseClone Cria uma cópia superficial do atual Object. (Herdado de Object.)
Método protegido OnGenerateNextValues Gera o próximo valor, de acordo com o algoritmo de geração de dados.
Método protegido OnGetOutputValue Recupera o atual conjunto de resultados que consiste em um ou mais valores.
Método protegido OnInitialize Inicializa o gerador.
Método protegido OnNextValues Gera o próximo conjunto de valores para uma linha de dados.
Método protegido OnSetInputValues Define as propriedades de entrada de um gerador de dados usando a lista de valores nomeados fornecida.
Método protegido OnValidateInputs Valida que todas as entradas necessárias no gerador de dados foram definidas.
Método público SetExtensionHandle Define o identificador de extensão usando a alça de extensão especificada.
Método público SetInputValues Define os valores de entrada para um gerador de dados.
Método público ToString Retorna um string que representa o objeto atual. (Herdado de Object.)
Método público ValidateInputs Valida que todas as entradas necessárias no gerador de dados foram definidas.

Início

Comentários

Se os geradores de dados padrão não forem suficientes, você pode criar os geradores de dados personalizados. Para criar um gerador de dados personalizados, você deve criar uma classe que implementa IGenerator ou herda de Generator. Identificar a classe como um gerador de dados, decorando com GeneratorAttribute.

Você pode criar um designer personalizado para um gerador de dados personalizados, ou você pode usar DefaultGeneratorDesigner.

A implementação de classe base constrói saídas que sejam baseiam em propriedades públicas que são marcadas com o OutputAttribute. As entradas são definidas usando o InputAttribute. O uso de propriedades que são marcadas com atributos oferece um mecanismo simples para declarar a entrada e os valores de saída são fortemente tipados.

Exemplos

Os geradores de dados padrão não é possível gerar dados para atender a algumas restrições de verificação. Por exemplo, uma restrição check que requer uma data para ter uma das duas faixas distintas não é possível usar o padrão DateTime gerador. Este exemplo cria um gerador de dados personalizados que pode satisfazer tal uma restrição. O gerador de duas faixas distintas de aceita como entrada e gera uma data aleatória que está em um dos dois intervalos. Para obter mais informações, consulte Demonstra Passo a passo: Criando um gerador de dados personalizado para um teste de verificação.

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

Acesso thread-safe

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Namespace Microsoft.Data.Schema.Tools.DataGenerator

GeneratorAttribute

GeneratorInit

IGenerator

Outros recursos

Demonstra Passo a passo: Criando um gerador de dados personalizado para um teste de verificação

Creating Custom Data Generators

Uma visão geral da extensibilidade do gerador de dados

Specifying Details of Data Generation for a Column