次の方法で共有


カスタム データ ジェネレーターの考慮事項

Visual Studio のデータ生成機能を拡張するには、カスタム データ ジェネレーターを作成します。 標準データ ジェネレーターでは満たすことができないビジネス ルールがある場合は、カスタム データ ジェネレーターを作成できます。 詳細については、「データ ジェネレーターを使用したデータベースのテスト データの生成」を参照してください。

カスタム データ ジェネレーターを作成するには、あらかじめ、以下の問題を考慮しておく必要があります。

データ ジェネレーターの名前付け

カスタム データ ジェネレーターを作成する場合、ユーザー インターフェイスに表示されるカスタム データ ジェネレーターの名前を制御できます。 複数のデータ ジェネレーターに同じ名前を付けることは避ける必要があります。 また、ジェネレーターに組み込みのデータ ジェネレーターと同じ名前を付けることも避けてください。

宣言型の API を使用した名前付け

カスタム データ ジェネレーターで使用するデザイナーを宣言しなかった場合、DefaultDistributionDesigner の作成時に、データ ジェネレーターのクラス名が表示名として使用されます。

カスタム データ ジェネレーターのユーザー インターフェイスに表示されるジェネレーターの名前を指定するには、カスタム データ ジェネレーターのクラスに次の属性を適用します。

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

基本型の API を使用した名前付け

カスタム デザイナーを作成した場合、そのデザイナーの Name プロパティによって返される値がカスタム データ ジェネレーターのユーザー インターフェイスに表示されます。 カスタム デザイナーを DefaultGeneratorDesigner から派生させた場合は、DisplayName 属性が使用されます。 カスタム デザイナーを IGeneratorDesigner から派生させた場合、DisplayName 属性は無視されます。

データ ジェネレーターの DisplayName 属性を指定するには、データ ジェネレーターのクラスに次の属性を追加する必要があります。

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

カスタム データ ジェネレーターを SQL データ型に対する既定のデータ ジェネレーターとして指定する

カスタム データ ジェネレーターを SQL データ型に対する既定のデータ ジェネレーターとして指定できます。 詳細については、「方法 : 列の種類に対応する既定のジェネレーターを変更する」を参照してください。

カスタム データ ジェネレーターを SQL データ型に対する既定のデータ ジェネレーターとして割り当てる場合には、次の制限事項が適用されます。

  • UNIQUE 制約を持つことのできないすべての SQL データ型に、カスタム データ ジェネレーターを割り当てることができます。 たとえば、Image データ型には、カスタム データ ジェネレーターを割り当てることができます。

  • フィルター属性を持たないカスタム データ ジェネレーターは、すべての SQL データ型に割り当てることができます。

  • フィルター属性を持つカスタム データ ジェネレーターは、一意の値を生成できる場合に限り、UNIQUE 制約を持つ 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 属性を指定したカスタム データ ジェネレーターに 1 つ以上の入力プロパティを指定する場合は、それらのプロパティを読み取り専用にする必要があります。 入力が自動的に割り当てられるプロパティには setter が必要ですが、その InputDescriptor で ReadOnly プロパティを true に設定する必要があります。

自動的に割り当てられるプロパティとして指定すると、そのほとんどのプロパティの値がデータ生成計画を開いたときにリセットされます。 たとえば、Collation、Data Type、MaxLength、Nullable、および RowsToGenerate のプロパティは、自動的に割り当てられるように指定した時点でリセットされます。 これに対し、Unique、Seed、および PercentageNull プロパティは、自動的に割り当てられるプロパティとして指定したときにリセットされません。

プロパティの値が読み取り専用にリセットされるように指定することで、カスタム データ ジェネレーターのユーザーの混乱を避けることができます。

参照

処理手順

方法 : カスタム データ ジェネレーターを作成する

チュートリアル: カスタム データ ジェネレーターの作成

概念

データ ジェネレーター機能拡張の概要

カスタム データ ジェネレーターを使用した特殊なテスト データの生成