自定义数据生成器的注意事项

可通过创建自定义数据生成器来扩展 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 特性来标记自定义数据生成器的一个或多个输入属性,则还应使这些属性成为只读的。 具有自动分配的输入的属性需要具有 setter,但它的 InputDescriptor 的 ReadOnly 属性应设置为 true。

当您打开数据生成计划时,大多数标记为自动分配的属性的值都会重置。 例如,标记为自动分配的 Collation、Data Type、MaxLength、Nullable 和 RowsToGenerate 属性将全部重置。 相比之下,标记为自动分配的 Unique、Seed 和 PercentageNull 属性将不会重置。

通过使将重置其值的属性成为只读的,有助于避免自定义数据生成器的用户出现困惑。

请参见

任务

如何:创建自定义数据生成器

演练:创建自定义数据生成器

概念

数据生成器扩展性概述

用自定义数据生成器生成专用的测试数据