Compartir a través de


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
Método protegido Generator Se le llama desde los constructores en las clases derivadas para inicializar la clase Generator.

Arriba

Propiedades

  Nombre Descripción
Propiedad pública Collation Obtiene o establece la intercalación, o la ordenación lingüísticamente correcta, de esta columna.
Propiedad pública Column Obtiene o establece la columna.
Propiedad pública ColumnName Obtiene o establece el nombre de la columna.
Propiedad pública Constraints Obtiene o establece la información de restricciones CHECK para la columna.
Propiedad pública DefaultLocaleId Obtiene o establece el id. de configuración regional.
Propiedad pública DefaultValue Obtiene o establece el valor predeterminado de la columna.
Propiedad pública ExtensionHandle Obtiene el identificador de extensiones.
Propiedad pública MaxLength Obtiene o establece la longitud máxima para los valores de esta columna.
Propiedad pública Nullable Obtiene o establece un valor que indica si esta columna se puede establecer en nullreferencia null (Nothing en Visual Basic).
Propiedad pública OutputKey Obtiene o establece la clave que se utiliza para recuperar los valores de salida.
Propiedad pública 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.
Propiedad pública Precision Obtiene o establece la precisión de los datos.
Propiedad pública RowsToInsert Obtiene o establece el número de filas que se van a generar.
Propiedad pública Scale Obtiene o establece la escala de los datos.
Propiedad pública SchemaName Obtiene o establece el nombre del esquema al que pertenece la columna.
Propiedad pública 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.
Propiedad pública TableName Obtiene o establece el nombre de la tabla a la que pertenece la columna.
Propiedad pública TargetType Obtiene o establece el tipo de datos de destino de la columna.
Propiedad pública 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
Método público Dispose() Libera todos los recursos usados por Generator.
Método protegido Dispose(Boolean) Libera los recursos no administrados utilizados por Generator y, de forma opcional, libera los recursos administrados.
Método público Equals Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegido 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).
Método público GenerateNextValues Genera el siguiente valor de acuerdo con el algoritmo de generación de datos.
Método público GetHashCode Actúa como función hash para un tipo concreto. (Se hereda de Object).
Método público GetOutputValue Recupera un valor de salida mediante OutputKey.
Método público GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método público Initialize Inicializa el generador de datos.
Método protegido MemberwiseClone Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método protegido OnGenerateNextValues Genera el siguiente valor de acuerdo con el algoritmo de generación de datos.
Método protegido OnGetOutputValue Recupera el conjunto actual de resultados, que está compuesto por uno o más valores.
Método protegido OnInitialize Inicializa el generador.
Método protegido OnNextValues Genera el conjunto siguiente de valores para una fila de datos.
Método protegido OnSetInputValues Establece las propiedades de entrada de un generador de datos utilizando la lista de valores con nombre proporcionada.
Método protegido OnValidateInputs Comprueba que se hayan establecido todas las entradas necesarias para el generador de datos.
Método público SetExtensionHandle Establece el identificador de extensiones utilizando el identificador de extensiones especificado.
Método público SetInputValues Establece los valores de entrada para un generador de datos.
Método público ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).
Método público 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)

GeneratorAttribute

GeneratorInit

IGenerator

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

Specifying Details of Data Generation for a Column