更新:2007 年 11 月
通过创建自定义数据生成器或扩展标准数据生成器,可以扩展 Visual Studio Team System Database Edition 的数据生成功能。如果标准数据生成器无法满足您的业务规则,则可以创建自定义数据生成器。有关更多信息,请参见生成数据概述。在创建自定义数据生成器之前,应考虑以下问题。
数据生成器的命名
创建自定义数据生成器时,可以控制将在此自定义数据生成器的用户界面中显示的名称。应避免为多个数据生成器指定相同的名称,因为这样用户将不易区分这些生成器。
使用声明性 API 时的命名
如果未声明要与自定义数据生成器一起使用的设计器,则在创建 DefaultDistributionDesigner 时此自定义数据生成器的类名将显示为显示名称。可以将以下属性应用到您的自定义数据生成器类中,以为此自定义数据生成器指定将在其用户界面上显示的名称。
[System.ComponentModel.DisplayName("YourGeneratorName")]
使用基本 API 时的命名
如果创建自定义设计器,则由此设计器的 [Name] 属性返回的值将显示在自定义数据生成器的用户界面中。如果自定义设计器是从 DefaultDistributionDesigner 派生的,则将使用 DisplayName 属性。如果自定义设计器是从 IGeneratorDesigner 派生的,则将忽略 DisplayName 属性。若要为数据生成器指定 DisplayName 属性,则必须添加以下属性:
[System.ComponentModel.DisplayName("YourGeneratorName")]
将自定义数据生成器指定为某一 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 属性来标记自定义数据生成器的一个或多个输入属性,则还应当将这些属性标记为只读。当您打开数据生成计划时,大多数标记为自动分配的属性的值都将重置。例如,标记为自动分配的 Collation、Data Type、MaxLength、Nullable 和 RowsToGenerate 属性将全部重置。Unique、Seed 和 PercentageNull 属性将不会重置。通过将其值会重置的属性标记为只读,可以帮助避免使自定义数据生成器的用户感到混淆。