Поделиться через


Вопросы, связанные с применением пользовательских генераторов данных

Можно расширять возможности генерирования данных Visual Studio, создавая пользовательские генераторы данных. При наличии бизнес-правила, которому не удовлетворяют стандартные генераторы данных, можно создать пользовательский генератор данных. Дополнительные сведения см. в разделе Создание данных теста для баз данных с помощью генераторов данных.

Прежде чем приступить к созданию пользовательского генератора данных, необходимо решить ряд вопросов, которые описаны ниже.

Именование генератора данных

Создавая пользовательский генератор данных, можно определить имя, которое будет отображаться для него в пользовательском интерфейсе. Следует избегать присвоения одного и того же имени нескольким генераторам данных. Кроме того, следует избегать присвоения генератору имени, совпадающего с именем одного из встроенных генераторов данных.

Именование при использовании декларативного API

Если не объявить конструктор для применения с пользовательским генератором данных, при создании DefaultDistributionDesigner в качестве его отображаемого имени будет использоваться имя класса генератора данных.

Чтобы задать имя генератора, отображаемое в пользовательском интерфейсе, можно применить к классу пользовательского генератора данных следующий атрибут:

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

Именование при использовании базового API

При создании пользовательского конструктора значение, возвращаемое свойством Name этого конструктора, отображается в пользовательском интерфейсе как имя пользовательского генератора данных. Если пользовательский конструктор создан как производный от DefaultGeneratorDesigner, используется атрибут DisplayName. Если вместо этого пользовательский конструктор создан как производный от IGeneratorDesigner, атрибут DisplayName пропускается.

Чтобы задать для генератора данных атрибут DisplayName, необходимо добавить следующий атрибут в класс генератора данных:

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

Задание пользовательского генератора данных как используемого по умолчанию генератора данных для типа данных SQL

Пользовательский генератор данных можно назначить в качестве генератора данных, используемого для типа данных SQL по умолчанию. Дополнительные сведения см. в разделе Практическое руководство. Изменение генератора по умолчанию для типа столбца.

При назначении пользовательского генератора данных в качестве типа данных SQL, нужно придерживаться следующих ограничений.

  • Пользовательский генератор данных можно назначить любому типу данных SQL, не имеющему уникального ограничения. Например, можно назначить пользовательский генератор данных типу данных Image.

  • Пользовательский генератор данных без атрибутов фильтра можно назначить любому типу данных SQL.

  • Пользовательский генератор данных с атрибутами фильтра можно назначить типу данных SQL с ограничением уникальности, только если этот пользовательский генератор данных может генерировать уникальные значения. Чтобы назначить генератор такого типа, следует применить к классу этого пользовательского генератора данных следующий атрибут:

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

Пользовательские конструкторы

По умолчанию пользовательский генератор данных будет использовать конструктор по умолчанию.

Если требуется применять с пользовательским генератором данных пользовательский конструктор, необходимо задать для класса этого генератора дополнительный атрибут:

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

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

Входные свойства с автоматическим присваиванием

Если пометить одно или более входных свойств пользовательского генератора данных атрибутом AutoAssignedInput, эти свойства следует также сделать доступными только для чтения. Свойство с автоматическим присваиванием должно иметь метод установки, но свойство ReadOnly его дескриптора InputDescriptor должно иметь значение true.

Значения большинства свойств, помеченных как свойства с автоматическим присваиванием, при открытии плана создания данных сбрасываются. Например, сбрасываются свойства Collation, Data Type, MaxLength, Nullable и RowsToGenerate, если они помечены как свойства с автоматическим присваиванием. Напротив, свойства Unique, Seed и PercentageNull при обозначении их как свойств с автоматическим присваиванием не сбрасываются.

Преобразование свойств, значения которых будут сбрасываться, в доступные только для чтения, помогает избежать путаницы пользователям пользовательского генератора данных.

См. также

Задачи

Практическое руководство. Создание пользовательских генераторов данных

Пошаговое руководство. Создание пользовательского генератора данных

Основные понятия

Общие сведения о расширении генераторов данных

Создание специализированных тестовых данных с помощью пользовательского генератора данных