Partager via


Considérations sur les générateurs de données personnalisés

Vous pouvez étendre les fonctionnalités de génération de données de Visual Studio en créant vos propres générateurs de données personnalisés. S'il y a une règle métier que les générateurs de données standard ne peuvent pas satisfaire, vous pouvez créer un générateur de données personnalisé. Pour plus d'informations, consultez Génération de données de test pour des bases de données à l'aide de générateurs de données.

Avant de créer un générateur de données personnalisé, vous devez prendre en compte les points suivants.

Affectation d'un nom au générateur de données

Lorsque vous créez un générateur de données personnalisé, vous pouvez contrôler le nom qui apparaît dans l'interface utilisateur pour ce générateur. Vous devez éviter de donner le même nom à plusieurs générateurs de données. Vous devez également éviter de donner à votre générateur le même nom que l'un des générateurs de données intégrés.

Attribution de nom lorsque vous utilisez une API déclarative

Si vous ne déclarez pas de concepteur à utiliser avec votre générateur de données personnalisé, le nom de la classe du générateur de données apparaît comme nom complet lorsque le DefaultDistributionDesigner est créé.

Pour spécifier le nom pour le générateur qui s'affiche dans l'interface utilisateur pour le générateur de données personnalisé, vous pouvez appliquer l'attribut suivant à votre classe de générateur de données personnalisé :

[System.ComponentModel.DisplayName("YourGeneratorName")]

Attribution de nom lorsque vous utilisez une API de base

Si vous créez un concepteur personnalisé, la valeur retournée par la propriété Name de ce concepteur s'affiche dans l'interface utilisateur pour le générateur de données personnalisé. Si vous dérivez votre concepteur personnalisé de DefaultGeneratorDesigner, l'attribut DisplayName est utilisé. Si au contraire vous dérivez votre concepteur personnalisé de IGeneratorDesigner, l'attribut DisplayName est ignoré.

Pour spécifier l'attribut DisplayName pour votre générateur de données, vous devez ajouter l'attribut suivant à votre classe de générateur de données :

[System.ComponentModel.DisplayName("YourGeneratorName")]

Spécification d'un générateur de données personnalisé comme générateur de données par défaut pour un type de données SQL

Vous pouvez assigner un générateur de données personnalisé en tant que générateur de données par défaut pour un type de données SQL. Pour plus d'informations, consultez Comment : modifier le générateur par défaut pour un type de colonne.

Lorsque vous assignez un générateur personnalisé comme valeur par défaut pour un type de données SQL, les restrictions suivantes s'appliquent :

  • Vous pouvez assigner un générateur de données personnalisé à tout type de données SQL qui ne peut pas avoir de contrainte unique. Par exemple, vous pouvez assigner un générateur de données personnalisé au type de donnée Image.

  • Vous pouvez assigner un générateur de données personnalisé qui n'a pas d'attribut de filtre à tout type de données SQL.

  • Vous pouvez assigner un générateur de données personnalisé qui a des attributs de filtre à un type de données SQL qui peut avoir une contrainte unique seulement si le générateur de données personnalisé peut produire des valeurs uniques. Pour désigner ce type de générateur, appliquez l'attribut suivant à la classe de générateur de données personnalisé :

    <GeneratorStyles(DesignerStyles:=GeneratorDesignerStyles.CanProduceUniqueValues)> _
    Public Class TestGenerator
        Inherits Generator
    
    End Class
    
    [GeneratorStyles(DesignerStyles = GeneratorDesignerStyles.CanProduceUniqueValues)]
    public class TestGenerator:Generator
    {
    }
    

Concepteurs personnalisés

Par défaut, un générateur de données personnalisé utilisera le concepteur par défaut.

Si vous souhaitez utiliser un concepteur personnalisé avec votre générateur de données personnalisé, vous devez spécifier un attribut supplémentaire sur la classe de générateur de données personnalisé :

<Generator(GetType(CustomDesignerType))> _
Public Class TestGenerator
    Inherits Generator

End Class
[Generator(typeof(CustomDesignerType))]
public class TestGenerator:Generator
{
}

Propriétés d'entrée assignées automatiquement

Si vous marquez une ou plusieurs propriétés d'entrée pour votre générateur de données personnalisé avec l'attribut AutoAssignedInput, vous devez également définir ces propriétés en lecture seule. La propriété qui a une entrée assignée automatiquement doit avoir une méthode setter, mais doit avoir la propriété ReadOnly définie à true sur son InputDescriptor.

La plupart des propriétés que vous marquez comme assignées automatiquement verront leurs valeurs réinitialisées lorsque vous ouvrirez le plan de génération de données. Par exemple, les propriétés Classement, Type de données, MaxLength, Nullable et RowsToGenerate sont toutes réinitialisées lorsqu'elles sont marquées comme assignées automatiquement. Par contraste, les propriétés Unique, Seed et PercentageNull ne sont pas réinitialisées lorsqu'elles sont marquées comme assignées automatiquement.

En plaçant en lecture seule les propriétés dont les valeurs seront réinitialisées, vous permettrez d'éviter que les utilisateurs de votre générateur de données personnalisé soient surpris.

Voir aussi

Tâches

Comment : créer des générateurs de données personnalisés

Procédure pas à pas : création d'un générateur de données personnalisé

Concepts

Vue d'ensemble de l'extensibilité des générateurs de données

Générer des données de test spécialisées à l'aide d'un générateur de données personnalisé