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 | |
---|---|---|
Generator | Chamado a partir de construtores de classes derivadas para inicializar o Generator classe. |
Início
Propriedades
Nome | Descrição | |
---|---|---|
Collation | Obtém ou define o agrupamento ou classificação lingüisticamente apropriadas desta coluna. | |
Column | Obtém ou define a coluna. | |
ColumnName | Obtém ou define o nome da coluna. | |
Constraints | Obtém ou define as informações de restrição de verificação para a coluna. | |
DefaultLocaleId | Obtém ou define a identificação de localidade. | |
DefaultValue | Obtém ou define o valor padrão da coluna. | |
ExtensionHandle | Obtém o identificador de extensão. | |
MaxLength | Obtém ou define o comprimento máximo de valores nesta coluna. | |
Nullable | Obtém ou define um valor que indica se esta coluna pode ser definida nulluma referência nula (Nothing no Visual Basic). | |
OutputKey | Obtém ou define a chave que é usada para recuperar valores de saída. | |
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. | |
Precision | Obtém ou define a precisão dos dados. | |
RowsToInsert | Obtém ou define o número de linhas para gerar. | |
Scale | Obtém ou define a escala dos dados. | |
SchemaName | Obtém ou define o nome do esquema ao qual a coluna pertence. | |
Seed | Obtém ou define a semente.Você pode usar a semente para inicializar um algoritmo de geração de determinista dados aleatórios. | |
TableName | Obtém ou define o nome da tabela à qual a coluna pertence. | |
TargetType | Obtém ou define o tipo de dados de destino da coluna. | |
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 | |
---|---|---|
Dispose() | Libera todos os recursos usados pelo Generator. | |
Dispose(Boolean) | Libera os recursos não gerenciados usados pela Generator e, opcionalmente, libera os recursos gerenciados. | |
Equals | Determina se o especificado Object é igual a atual Object. (Herdado de Object.) | |
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.) | |
GenerateNextValues | Gera o próximo valor, de acordo com o algoritmo de geração de dados. | |
GetHashCode | Serves as a hash function for a particular type. (Herdado de Object.) | |
GetOutputValue | Recupera um valor de saída usando o OutputKey. | |
GetType | Obtém o Type da instância atual. (Herdado de Object.) | |
Initialize | Inicializa o gerador de dados. | |
MemberwiseClone | Cria uma cópia superficial do atual Object. (Herdado de Object.) | |
OnGenerateNextValues | Gera o próximo valor, de acordo com o algoritmo de geração de dados. | |
OnGetOutputValue | Recupera o atual conjunto de resultados que consiste em um ou mais valores. | |
OnInitialize | Inicializa o gerador. | |
OnNextValues | Gera o próximo conjunto de valores para uma linha de dados. | |
OnSetInputValues | Define as propriedades de entrada de um gerador de dados usando a lista de valores nomeados fornecida. | |
OnValidateInputs | Valida que todas as entradas necessárias no gerador de dados foram definidas. | |
SetExtensionHandle | Define o identificador de extensão usando a alça de extensão especificada. | |
SetInputValues | Define os valores de entrada para um gerador de dados. | |
ToString | Retorna um string que representa o objeto atual. (Herdado de Object.) | |
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
Outros recursos
Demonstra Passo a passo: Criando um gerador de dados personalizado para um teste de verificação
Creating Custom Data Generators