Generator (Clase)
Representa la clase base abstracta para los generadores de datos.
Jerarquía de herencia
System.Object
Microsoft.Data.Schema.Tools.DataGenerator.Generator
Espacio de nombres: Microsoft.Data.Schema.Tools.DataGenerator
Ensamblado: Microsoft.Data.Schema.Tools (en Microsoft.Data.Schema.Tools.dll)
Sintaxis
'Declaración
<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
El tipo Generator expone los siguientes miembros.
Constructores
Nombre | Descripción | |
---|---|---|
Generator | Se le llama desde los constructores en las clases derivadas para inicializar la clase Generator. |
Arriba
Propiedades
Nombre | Descripción | |
---|---|---|
Collation | Obtiene o establece la intercalación, o la ordenación lingüísticamente correcta, de esta columna. | |
Column | Obtiene o establece la columna. | |
ColumnName | Obtiene o establece el nombre de la columna. | |
Constraints | Obtiene o establece la información de restricciones CHECK para la columna. | |
DefaultLocaleId | Obtiene o establece el id. de configuración regional. | |
DefaultValue | Obtiene o establece el valor predeterminado de la columna. | |
ExtensionHandle | Obtiene el identificador de extensiones. | |
MaxLength | Obtiene o establece la longitud máxima para los valores de esta columna. | |
Nullable | Obtiene o establece un valor que indica si esta columna se puede establecer en nullreferencia null (Nothing en Visual Basic). | |
OutputKey | Obtiene o establece la clave que se utiliza para recuperar los valores de salida. | |
PercentageNull | Obtiene o establece el porcentaje de los valores generados para esta columna que el usuario desea que sea nullreferencia null (Nothing en Visual Basic).El porcentaje se expresa como un entero entre 0 y 100. | |
Precision | Obtiene o establece la precisión de los datos. | |
RowsToInsert | Obtiene o establece el número de filas que se van a generar. | |
Scale | Obtiene o establece la escala de los datos. | |
SchemaName | Obtiene o establece el nombre del esquema al que pertenece la columna. | |
Seed | Obtiene o establece el valor de inicialización.Puede utilizar el valor de inicialización para inicializar un algoritmo de generación de datos aleatorio determinista. | |
TableName | Obtiene o establece el nombre de la tabla a la que pertenece la columna. | |
TargetType | Obtiene o establece el tipo de datos de destino de la columna. | |
Unique | Obtiene o establece un valor que indica si la columna que se genera forma parte de una restricción única o de una restricción de clave principal. |
Arriba
Métodos
Nombre | Descripción | |
---|---|---|
Dispose() | Libera todos los recursos usados por Generator. | |
Dispose(Boolean) | Libera los recursos no administrados utilizados por Generator y, de forma opcional, libera los recursos administrados. | |
Equals | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). | |
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). | |
GenerateNextValues | Genera el siguiente valor de acuerdo con el algoritmo de generación de datos. | |
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). | |
GetOutputValue | Recupera un valor de salida mediante OutputKey. | |
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). | |
Initialize | Inicializa el generador de datos. | |
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). | |
OnGenerateNextValues | Genera el siguiente valor de acuerdo con el algoritmo de generación de datos. | |
OnGetOutputValue | Recupera el conjunto actual de resultados, que está compuesto por uno o más valores. | |
OnInitialize | Inicializa el generador. | |
OnNextValues | Genera el conjunto siguiente de valores para una fila de datos. | |
OnSetInputValues | Establece las propiedades de entrada de un generador de datos utilizando la lista de valores con nombre proporcionada. | |
OnValidateInputs | Comprueba que se hayan establecido todas las entradas necesarias para el generador de datos. | |
SetExtensionHandle | Establece el identificador de extensiones utilizando el identificador de extensiones especificado. | |
SetInputValues | Establece los valores de entrada para un generador de datos. | |
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). | |
ValidateInputs | Comprueba que se hayan establecido todas las entradas necesarias para el generador de datos. |
Arriba
Comentarios
Si los generadores de datos estándar son insuficientes, se pueden crear generadores de datos personalizados. Para crear un generador de datos personalizados, debe crear una clase que implemente IGenerator o herede de Generator. Identifica la clase como un generador de datos decorándolo con GeneratorAttribute.
Puede crear un diseñador personalizado para un generador de datos personalizados o puede utilizar DefaultGeneratorDesigner.
La implementación de la clase base crea resultados que se basan en propiedades públicas marcadas con OutputAttribute. Las entradas se establecen mediante InputAttribute. El uso de propiedades que se marcan con atributos proporciona un mecanismo simple para declarar valores de entrada y salida fuertemente tipados.
Ejemplos
Los generadores de datos estándar no pueden generar datos para satisfacer algunas de las restricciones CHECK. Por ejemplo, si tiene una restricción CHECK que requiere que una fecha esté en uno de dos intervalos distintos, no puede usar el generador DateTime estándar. Este ejemplo crea un generador de datos personalizado que puede satisfacer una restricción de este tipo. El generador acepta dos intervalos distintos como entrada y genera una fecha aleatoria perteneciente a uno de los dos intervalos. Para obtener más información, vea Tutorial: Crear un generador de datos personalizado para una restricción CHECK.
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
Seguridad para subprocesos
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Vea también
Referencia
Microsoft.Data.Schema.Tools.DataGenerator (Espacio de nombres)
Otros recursos
Tutorial: Crear un generador de datos personalizado para una restricción CHECK
Creating Custom Data Generators
Descripción general de la extensibilidad del Generador de datos