Procedura dettagliata: creazione di un generatore dati personalizzato

I generatori di dati personalizzati sono moduli di codice creati per generare dati in Microsoft Visual Studio Team Edition for Database Professionals. È possibile creare un generatore per generare dati corrispondenti a un set di criteri specifico. È ad esempio possibile creare un generatore per generare nomi casuali da un elenco predeterminato o generare numeri compresi in un intervallo specificato.

In questa procedura dettagliata viene creato un generatore personalizzato che consente di generare un valore intero casuale compreso tra zero e un limite superiore specificato dall'utente del generatore. In questa procedura dettagliata vengono eseguite le attività seguenti.

  • Creare una classe che eredita da Generator.

  • Creare una proprietà di input per specificare il limite superiore dei dati generati.

  • Creare una proprietà di output da utilizzare come output del generatore.

  • Eseguire l'override del metodo OnGenerateNextValues per generare i dati.

Prerequisiti

Per completare questa procedura dettagliata, è necessario disporre dei seguenti elementi:

  • Visual Studio Team Edition for Database Professionals

Per creare un generatore personalizzato

  1. In Visual Studio creare un progetto Libreria di classi e assegnare ad esso il nome TestGenerator.

  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi riferimento.

    Verrà visualizzata la finestra di dialogo Aggiungi riferimento.

  3. Fare clic sulla scheda .NET. Nell'elenco Nome componente selezionare Microsoft.VisualStudio.TeamSystem.Data, quindi scegliere OK.

  4. (Facoltativo, solo Visual Basic) In Esplora soluzioni fare clic su Mostra tutti i file ed espandere il nodo Riferimenti per verificare il nuovo riferimento.

  5. Nella parte superiore della finestra Codice aggiungere la seguente riga di codice prima della dichiarazione di classe:

    Imports Microsoft.VisualStudio.TeamSystem.Data.DataGenerator
    
    using Microsoft.VisualStudio.TeamSystem.Data.DataGenerator;
    
  6. Rinominare la classe Class1 in TestGenerator.

    Avviso

    Per impostazione predefinita, il nome assegnato alla classe è quello visualizzato nell'elenco della colonna Generatore nella finestra Dettagli colonna. È necessario specificare un nome non in conflitto con quello di un generatore standard o di un altro generatore personalizzato.

    Public Class TestGenerator
    
    End Class
    
    public class TestGenerator
    {
    }
    
  7. Specificare che la classe eredita da Generator, come illustrato nell'esempio seguente:

    Public Class TestGenerator
        Inherits Generator
    
    End Class
    
    public class TestGenerator: Generator
    {
    }
    
  8. (Facoltativo: è necessario ignorare questo passaggio per completare la procedura dettagliata.) Aggiungere GeneratorStylesAttribute alla dichiarazione della classe.

    Importante

    Per impostare come predefinito per un tipo di colonna un generatore di dati personalizzato, è necessario che produca valori univoci. È inoltre necessario aggiungere l'attributo GeneratorStylesAttribute alla classe. Per ulteriori informazioni, vedere Procedura: modificare il generatore predefinito per un tipo di colonna.

    <GeneratorStyles(DesignerStyles:=GeneratorDesignerStyles.CanProduceUniqueValues)> _
    Public Class TestGenerator
        Inherits Generator
    
    End Class
    
    [GeneratorStyles(DesignerStyles = GeneratorDesignerStyles.CanProduceUniqueValues)]
    public class TestGenerator:Generator
    {
    }
    
  9. (Facoltativo. è necessario ignorare questo passaggio per completare la procedura dettagliata.) Aggiungere l'attributo GeneratorAttribute alla dichiarazione di classe, come illustrato nell'esempio seguente:

    Avviso

    In questa procedura dettagliata è necessario omettere questo passaggio. È necessario aggiungere l'attributo GeneratorAttribute alla classe solo se si desidera specificare un tipo di finestra di progettazione personalizzata per il generatore di dati personalizzato. Se non si desidera specificare una finestra di progettazione personalizzata, è possibile omettere l'attributo. Verrà utilizzata automaticamente la finestra di progettazione predefinita.

    <Generator(GetType(CustomDesignerType))> _
    Public Class TestGenerator
        Inherits Generator
    
    End Class
    
    [Generator(typeof(CustomDesignerType))]
    public class TestGenerator:Generator
    {
    }
    
  10. Scegliere Salva tutto dal menu File.

Aggiunta di proprietà di input e output al generatore

Nella sezione precedente è stata creata una classe che eredita dalla classe Generator. In questa sezione verrà aggiunta una proprietà di input e di output alla classe. Le proprietà di input vengono visualizzate in fase di progettazione nella finestra Proprietà e possono essere utilizzate per configurare il generatore. Le proprietà di output contengono i valori utilizzati per generare i dati e indicano inoltre i tipi di dati che è possibile ottenere tramite il generatore.

Per aggiungere una proprietà di input e di output

  1. Creare una variabile membro denominata mLimit, come illustrato nell'esempio seguente:

    Dim limitValue As Integer
    
    int limitValue;
    
  2. Creare una proprietà denominata Limit che imposta e restituisce la variabile membro mLimit, come illustrato nell'esempio seguente:

    Public Property Limit() As Integer
        Set(ByVal value As Integer)
            limitValue = value
        End Set
        Get
            Return limitValue
        End Get
    End Property
    
    public int Limit
    {
        // The get is optional for input properties
        set {limitValue = value;}
        get {return limitValue;}
    }
    
  3. Aggiungere l'attributo InputAttribute alla proprietà Limit, come illustrato nell'esempio seguente:

    <Input(Name:="Limit", Description:="The upper limit of the data that is generated.")> _
    Public Property Limit() As Integer
    
    [Input(Name="Limit", Description="The upper limit of the data that is generated.")]
    public int Limit
    
  4. Creare una variabile membro denominata mRandom, come illustrato nell'esempio seguente:

    Dim randomValue As Integer
    
    int randomValue;
    
  5. Creare una proprietà in sola lettura denominata RandomNumber e che restituisce la variabile membro mRandom, come illustrato nell'esempio seguente:

    Public ReadOnly Property RandomNumber() As Integer
        Get
           Return randomValue
        End Get
    End Property
    
    public int RandomNumber
    {
        get {return randomValue;}
    } 
    
  6. Aggiungere l'attributo OutputAttribute alla proprietà RandomNumber, come illustrato nell'esempio seguente:

    <Output()> _
    Public ReadOnly Property RandomNumber() As Integer
    
    [Output]
    public int RandomNumber
    
  7. Scegliere Salva tutto dal menu File.

Override del metodo OnGenerateNextValues

Visual Studio Team Edition for Database Professionals chiama il metodo OnGenerateNextValues di ogni generatore per ogni set di valori necessario. Quando si crea un generatore di dati, è necessario eseguire l'override di questo metodo per fornire il codice che consente di generare nuovi valori per ciascuna delle proprietà di output.

Per eseguire l'override del metodo OnGenerateNextValues

  1. Creare una variabile membro che corrisponde a un'istanza della classe Random, come illustrato nell'esempio seguente:

    Dim random As New Random
    
    Random random = new Random();
    

    Nota

    In questo passaggio viene creato un generatore di dati non deterministico che restituisce risultati non riproducibili tra una generazione di dati e quella successiva. Per creare un generatore di dati deterministico, passare la proprietà Seed come argomento del costruttore Random.

  2. Eseguire l'override del metodo OnGenerateNextValues, come illustrato nell'esempio seguente:

    Protected Overrides Sub OnGenerateNextValues()
    
        randomValue = CInt(random.NextDouble * Limit)
    End Sub
    
    protected override void OnGenerateNextValues()
    {
        randomValue = (int)(random.NextDouble() * Limit);
    }
    
  3. Scegliere Salva tutto dal menu File.

Firma del generatore

Prima della registrazione è necessario firmare tutti i generatori di dati personalizzati con un nome sicuro.

Per firmare il generatore con un nome sicuro

  1. Scegliere Proprietà TestGenerator dal menu Progetto per aprire le proprietà del progetto.

  2. Nella scheda Firma selezionare la casella di controllo Firma assembly.

  3. Nella casella Scegli un file chiave con nome sicuro fare clic su <Nuova...>.

  4. Nella casella Nome file di chiave digitare TestGeneratorKey, digitare e confermare una password, quindi scegliere OK.

    Quando si genera la soluzione, il file di chiave verrà utilizzato per firmare l'assembly.

  5. Scegliere Salva tutto dal menu File.

  6. Scegliere Genera soluzione dal menu Genera.

    Il generatore di dati è stato generato. Sarà quindi necessario registrarlo nel computer per poterlo utilizzare in piani di generazione dati.

Sicurezza

Per ulteriori informazioni, vedere Protezione dei generatori di dati.

Passaggi successivi

A questo punto, dopo aver generato il generatore di dati, è necessario registrarlo nel computer, manualmente, come descritto in Procedura dettagliata: registrazione di un generatore di dati personalizzato, oppure generando un progetto di distribuzione che esegua automaticamente la registrazione.

Vedere anche

Attività

Procedura: aggiungere proprietà di input a un generatore di dati
Procedura: aggiungere proprietà di output a un generatore di dati
Procedura: registrare generatori di dati personalizzati
Procedura: creare generatori di dati personalizzati

Riferimenti

Microsoft.VisualStudio.TeamSystem.Data.DataGenerator

Concetti

Cenni preliminari sulla extensibility dei generatori di dati

Altre risorse

Creazione di generatori di dati personalizzati
Procedure dettagliate sul refactoring dei database