自訂資料產生器的考量
您可以建立自訂資料產生器,以擴充 Visual Studio 的資料產生功能。 如果具有標準資料產生器所無法滿足的商務規則,可以建立自訂資料產生器。 如需詳細資訊,請參閱使用資料產生器產生資料庫的測試資料。
在建立自訂資料產生器之前,應考量下列問題。
資料產生器命名
在建立自訂資料產生器時,您可以控制在使用者介面中顯示的自訂資料產生器名稱。 應避免將多個資料產生器指定為同一個名稱。 您還應避免針對產生器指定與任何內建資料產生器相同的名稱。
使用宣告式 API 時的命名
如果您沒有宣告搭配自訂資料產生器使用的設計工具,那麼在建立 DefaultDistributionDesigner 時,會以資料產生器的類別名稱做為其顯示名稱。
若要指定在自訂資料產生器的使用者介面中所顯示的產生器名稱,您可以將下列屬性套用至自訂資料產生器類別:
[System.ComponentModel.DisplayName("YourGeneratorName")]
使用基底 API 時的命名
如果您建立自訂設計工具,名稱屬性所傳回的值會顯示在自訂資料產生器的使用者介面中。 如果自訂設計工具衍生自 DefaultGeneratorDesigner,會使用 DisplayName 屬性。 如果您的自訂設計工具衍生自 IGeneratorDesigner,會忽略 DisplayName 屬性。
若要指定資料產生器的 DisplayName 屬性,您必須將下列屬性加入至資料產生器類別:
[System.ComponentModel.DisplayName("YourGeneratorName")]
指定自訂資料產生器做為 SQL 資料型別的預設資料產生器
您可以指定自訂資料產生器做為 SQL 資料型別的預設資料產生器。 如需詳細資訊,請參閱 HOW TO:變更資料行型別的預設產生器。
當您指派自訂資料產生器做為 SQL 資料型別的預設值時,會套用下列限制:
您可以將自訂資料產生器指派給任何無法具有唯一條件約束 (Unique Constraint) 的 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 屬性 (Attribute) 為自訂資料產生器標記一個或多個輸入屬性 (Property),則應該也將這些屬性 (Property) 標記為唯讀。 屬性若是具有自動指派的輸入,則必須要有 setter,但其 InputDescriptor 的 ReadOnly 屬性應設定為 true。
當您開啟「資料產生計劃」(Data Generation Plan) 時,大部分標記為自動指派之屬性 (Property) 的值都會重設。 例如,Collation、Data Type、MaxLength、Nullable 和 RowsToGenerate 屬性 (Property) 在標記為自動指派時都會重設。 相反,Unique、Seed 和 PercentageNull 屬性 (Property) 在標記為自動指派時不會重設。
將值會重設的屬性 (Property) 標記為唯讀,自訂資料產生器的使用者就不會感到混淆。