逐步解說:建立自訂資料產生器
更新:2007 年 11 月
開發資料庫「結構描述」(Schema) 時,藉由將盡可能貼近實際執行資料的資料填入測試資料庫,即可以讓提議變更的測試更加有效。自訂資料產生器提供的測試資料,會比內建資料產生器更精確地符合您的規格。例如,您可以建立產生器,使用您指定的清單中的隨機名稱或是您指定的數字範圍,來填入資料表資料行。如需詳細資訊,請參閱產生資料概觀。
在此逐步解說中,您會建立自訂產生器來產生一個隨機整數,這個整數介於零以及產生器使用者所指定的上限之間。在這個逐步解說中,您會執行下列工作:
建立繼承自 Generator 的類別。
建立輸入屬性,以指定要產生之資料的上限。
建立輸出屬性當做產生器輸出來使用。
覆寫 OnGenerateNextValues 方法來產生資料。
如需在建立自訂資料產生器前應該要考量的安全性問題的詳細資訊,請參閱資料產生器的安全性。
必要條件
若要完成這個逐步解說,您需要下列項目:
- Visual Studio Team Edition for Database Professionals
若要建立自訂產生器
建立類別庫專案並命名為 TestGenerator。
在 [方案總管] 中,以滑鼠右鍵按一下此專案,再按一下 [加入參考]。
[加入參考] 對話方塊隨即出現。
按一下 [.NET] 索引標籤。
在 [元件名稱] 清單中,按一下 [Microsoft.VisualStudio.TeamSystem.Data],然後按一下 [確定]。
(選擇項,僅限 Visual Basic) 在 [方案總管] 中,按一下 [顯示所有檔案],並展開 [參考] 節點來驗證新的參考。
在 [程式碼] 視窗上方的類別宣告之前,加入以下程式碼行:
Imports Microsoft.VisualStudio.TeamSystem.Data.DataGenerator
using Microsoft.VisualStudio.TeamSystem.Data.DataGenerator;
將此類別從 Class1 重新命名為 TestGenerator。
警告: 根據預設,您提供給類別的名稱為 [資料行詳細資料] 視窗中,出現在 [產生器] 資料行中清單內的名稱。您應該指定不會與內建產生器名稱或另一個自訂產生器名稱發生衝突的名稱。
Public Class TestGenerator End Class
public class TestGenerator { }
指定您的類別繼承自 Generator,如下列範例所示:
Public Class TestGenerator Inherits Generator End Class
public class TestGenerator: Generator { }
在 [檔案] 功能表上按一下 [全部儲存]。
將輸入和輸出屬性加入到產生器
在上一個章節中,您會建立一個繼承自 Generator 類別的類別。在本章節中,您會將輸入和輸出屬性加入到類別。輸入屬性在設計階段會出現在 [屬性] 視窗中,而且可讓您用來設定產生器。輸出屬性包含用來產生資料的值,輸出屬性也會指示這個產生器可以產生的資料型別。
若要加入輸入與輸出屬性
建立名為 mLimit 的成員變數,如下列範例所示:
Dim limitValue As Integer
int limitValue;
建立名為 Limit 的屬性,此屬性會設定及傳回成員變數 mLimit,如下列範例所示:
Public Property Limit() As Integer Set(ByVal value As Integer) limitValue = value End Set Get Return limitValue End Get End Property
public int Limit { // The get is optional for input properties set {limitValue = value;} get {return limitValue;} }
將 InputAttribute 加入到 Limit 屬性,如下列範例所示:
<Input(Name:="Limit", Description:="The upper limit of the data that is generated.")> _ Public Property Limit() As Integer
[Input(Name="Limit", Description="The upper limit of the data that is generated.")] public int Limit
建立名為 mRandom 的成員變數,如下列範例所示:
Dim randomValue As Integer
int randomValue;
建立名為 RandomNumber 的唯讀屬性,此屬性會傳回成員變數 mRandom,如下列範例所示:
Public ReadOnly Property RandomNumber() As Integer Get Return randomValue End Get End Property
public int RandomNumber { get {return randomValue;} }
將 OutputAttribute 加入到 RandomNumber 屬性,如下列範例所示:
<Output()> _ Public ReadOnly Property RandomNumber() As Integer
[Output] public int RandomNumber
在 [檔案] 功能表上按一下 [全部儲存]。
覆寫 OnGenerateNextValues 方法
Visual Studio Team Edition for Database Professionals 會呼叫每一個產生器的 OnGenerateNextValues 方法,以取得所需的每一個值集。當您建立資料產生器時,您應該覆寫這個方法來提供邏輯,該邏輯會針對每一個輸出屬性產生值。
若要覆寫 OnGenerateNextValues 方法
建立為 Random 類別執行個體的成員變數,如下列範例所示:
Dim random As New Random
Random random = new Random();
注意事項: 這個步驟會建立非決定性的資料產生器。若要建立具決定性的資料產生器,請將 Seed 當做引數傳遞給 Random 建構函式。
覆寫 OnGenerateNextValues方法,如下列範例所示:
Protected Overrides Sub OnGenerateNextValues() randomValue = CInt(random.NextDouble * Limit) End Sub
protected override void OnGenerateNextValues() { randomValue = (int)(random.NextDouble() * Limit); }
在 [檔案] 功能表上按一下 [全部儲存]。
簽署產生器
您必須先以強式名稱簽署所有自訂資料產生器,然後才可以進行註冊。
若要以強式名稱簽署產生器
在 [專案] 功能表上,按一下 [TestGenerator 屬性]。
選取 [簽署] 索引標籤上的 [簽署組件] 核取方塊。
在 [選擇強式名稱金鑰檔] 方塊中,按一下 [<新增>]。
在 [金鑰檔名稱] 方塊中,輸入 TestGeneratorKey。
輸入並確認密碼,然後按一下 [確定]。
當您建置方案時,會使用金鑰檔來簽署組件。
在 [檔案] 功能表上按一下 [全部儲存]。
按一下 [建置] 功能表上的 [建置方案],
您已經建立自訂資料產生器。
後續步驟
現在,您已經建置資料產生器,必須先在電腦上進行註冊,才可以使用產生器。您可以手動註冊資料產生器 (如逐步解說:註冊自訂資料產生器中所述),或是建置會自動註冊資料產生器的部署專案。
請參閱
工作
概念
參考
Microsoft.VisualStudio.TeamSystem.Data.DataGenerator