Übersicht über die Erweiterbarkeit von Datengeneratoren
Aktualisiert: November 2007
Sie können Visual Studio Team System Database Edition verwenden, um aussagekräftige Daten für Tests zu generieren. Mithilfe von integrierten Datengeneratoren können Sie zufällige Daten generieren, Daten aus vorhandenen Datenquellen generieren und viele Aspekte der Datengenerierung steuern. Wenn die Funktionen der integrierten Generatoren nicht ausreichen, können Sie benutzerdefinierte Datengeneratoren erstellen. Um benutzerdefinierte Datengeneratoren zu erstellen, verwenden Sie die Klassen im Microsoft.VisualStudio.TeamSystem.Data.DataGenerator-Namespace.
Die Erweiterbarkeits-API für Datengeneratoren
Die Erweiterbarkeits-API stellt Klassen bereit, die Entwickler vererben können. Zusätzlich zu den Klassen enthält die API Attribute, die Sie auf die abgeleiteten Klassen anwenden können. Durch Anwenden dieser Attribute verringern Sie den Umfang an Code, der für allgemeine Zwecke in benutzerdefinierten Generatoren erforderlich ist.
Mit den folgenden vier Verfahren können Sie mithilfe der Erweiterbarkeits-API benutzerdefinierte Datengeneratoren erstellen:
Erweiterbarkeit |
Beschreibung |
Schwierigkeitsgrad |
Beispiel |
---|---|---|---|
Deklarative Erweiterbarkeit |
|
Einfach |
Der integrierte Ganzzahl-Datengenerator. |
Normale Erweiterbarkeit |
|
Mittel. Diese Methode wird für die meisten Fälle empfohlen. |
Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Datengenerators |
Aggregationserweiterbarkeit |
|
Mittel |
|
Basiserweiterbarkeit |
|
Schwierig |
Keiner |
Aggregationserweiterbarkeit
Bei Aggregationserweiterbarkeit vererben Sie die Generator-Klasse wie üblich. Anschließend erstellen Sie eine oder mehrere Instanzen der Standarddatengeneratorklassen. Um auf die Standardgeneratorklassen zuzugreifen, müssen Sie einen Verweis auf Microsoft.VisualStudio.TeamSystem.Data.Generators.dll hinzufügen. Diese Datei finden Sie unter ...\Programme\Microsoft Visual Studio 9.0\DBPro\Extensions.
Basiserweiterbarkeit
Bei der Basiserweiterbarkeits-API handelt es sich um den Mechanismus, mit dem das Datengenerierungsmodul und die Designer für Datengenerierungspläne interagieren. Diese API ist dafür vorgesehen, folgende Ziele zu erfüllen:
Stabilität – Fördern einer konsistenten und stabilen Implementierung sowohl im Entwurfszeit- als auch im Laufzeitmodul.
Flexibilität – Unterstützen komplexer Generatoren wie dem datengebundenen Generator.
Ein Entwurfskompromiss bei der Basiserweiterbarkeits-API besteht darin, dass sie komplexer ist als die deklarative Erweiterbarkeits-API höherer Ebene.
Registrieren von benutzerdefinierten Datengeneratoren
Bevor Sie den benutzerdefinierten Datengenerator verwenden können, müssen Sie ihn auf dem Computer registrieren. Wenn Sie den benutzerdefinierten Datengenerator anderen Personen für die Verwendung zur Verfügung stellen, müssen diese den Generator auf ihren Computern registrieren. Sie können benutzerdefinierte Datengeneratoren mit den folgenden Verfahren registrieren:
Methode |
Erforderliche Berechtigungen |
Beispiel |
---|---|---|
Registrieren Sie den Generator im Ordner mit den privaten Assemblys. |
Hauptbenutzer oder höher. |
Gewusst wie: Registrieren von benutzerdefinierten Datengeneratoren Exemplarische Vorgehensweise: Registrieren eines benutzerdefinierten Datengenerators |
Registrieren Sie den Generator im globalen Assemblycache. |
Administrator |
Keiner |
Erstellen Sie ein Bereitstellungsprojekt zum Registrieren des Generators. |
Administrator |
Keiner |
Datengeneratoren, Verteilungen und Designer
Sie können benutzerdefinierte Datengeneratoren und benutzerdefinierte Designer für diese Generatoren erstellen. Sie können auch benutzerdefinierte Verteilungen für numerische Datengeneratoren und benutzerdefinierte Designer für diese Verteilungen erstellen.
Benutzerdefinierte Datengeneratoren erzeugen zufällige Testdaten nach einem von Ihnen angegebenen Satz von Regeln. Sie können den Standarddesigner mit diesen Generatoren verwenden, oder Sie können einen benutzerdefinierten Designer für diese durch Erben von DefaultGeneratorDesigner erstellen. Der Datengenerator für reguläre Ausdrücke beispielsweise ist ein integrierter Datengenerator, der jedoch einen benutzerdefinierten Designer verwendet, sodass er eine benutzerdefinierte Validierung von Benutzereingaben zur Entwurfszeit ausführen kann.
Durch die Verwendung eines benutzerdefinierten Generatordesigners können Sie anpassen, wie Eingabeeigenschaften und Ausgabeeigenschaften vom Benutzer abgerufen werden, Standardwerte festlegen und das Validierungsverhalten angeben.
Durch die Verwendung einer benutzerdefinierten Verteilung können Sie die Verteilung numerischer Werte steuern, die ein Datengenerator generiert.
Benutzerdefinierte Verteilungsdesigner steuern das Entwurfszeitverhalten für eine benutzerdefinierte Verteilung. Dieses Verhalten umfasst das Abrufen der Namen für die Eingabeeigenschaften der Verteilung, das Festlegen der Standardwerte für die Eingabeeigenschaften und die Validierung der Werte für die Eingabeeigenschaften der Verteilung.
Datengeneratoren und Lokalisierung
Die Datengeneratoren in Team Edition for Database Professionals sind lokalisiert, da Visual Studio mehrere Sprachversionen umfasst. Es ist wahrscheinlich nicht erforderlich, die benutzerdefinierten Datengeneratoren zu lokalisieren. Wenn Sie einen Datengenerator erstellen müssen, der lokalisiert wird, sollten Sie einen benutzerdefinierten Designer erstellen. Sie können auch die GetInputs-Methode überschreiben, um die Namen der Eingabeeigenschaften zu lokalisieren.
Hinweis Vererben Sie nach Möglichkeit die DefaultGeneratorDesigner-Klasse, und implementieren Sie nicht die IDesigner-Schnittstelle, um zusätzlichen Aufwand zu vermeiden.
Instanziieren von Datengeneratoren
Benutzerdefinierte Datengeneratoren können Daten freigeben. Der Bereich der freigegebenen Daten liegt zwischen Generatortyp und SQL-Tabelle. Alle Generatortypen weisen ein eindeutiges Instanzwörterbuch für die einzelnen SQL-Tabellen auf. Beispielsweise verfügt ein benutzerdefinierter Datengenerator für eine Tabelle mit dem Namen Customers über den Zugriff auf ein freigegebenes Wörterbuch. Sie können dem Wörterbuch beliebige Informationen hinzufügen und diese freigeben. Das Wörterbuch stellt garantiert dieselbe Instanz für alle Generatortypen und Tabellen dar. Sie können beispielsweise einen benutzerdefinierten Datengenerator erstellen und das Wörterbuch von GeneratorInit anfordern. Dann können Sie überprüfen, ob das Wörterbuch freigegebene Informationen enthält. Wenn dies der Fall ist, können Sie die Informationen verwenden, um Daten zu generieren. Außerdem können Sie freigegebene Informationen erstellen, die andere Instanzen des Generators verwenden können.
Hinweis: |
---|
Das Instanziieren von Generatoren ist ein fortgeschrittenes Verfahren. Durch das Instanziieren von Generatoren können Sie einen benutzerdefinierten Datengenerator erstellen, der spaltenübergreifend CHECK-Einschränkungen behandelt. Hierbei kann es sich beispielsweise um eine CHECK-Einschränkung handeln, die erfordert, dass eine Spalte größer als eine andere Spalte ist. |
Die Datengenerierung
Die Datengenerierung erfolgt in den folgenden Phasen:
Bestimmen des Designertyps |
Entwurfszeit |
In dieser Phase ist der Typ des Datengenerators als Eingabe erforderlich. Das Modul kann dann das GeneratorAttribute abfragen, um den Designertyp abzurufen. In den meisten Fällen wird das GeneratorAttribute von der Basisklasse geerbt, die den Standarddesigner angibt. |
Instanziieren und Initialisieren des Designers |
Entwurfszeit |
Der Designer wird instanziiert. Der Designer wird durch Aufrufen von Initialize und Übergeben des Generatortyps als Argument initialisiert. |
Abrufen der Eingabedeskriptoren |
Entwurfszeit |
Die InputDescriptors werden vom Designer abgerufen. Hierzu ruft der Standarddesigner alle Eigenschaften des Datengenerators ab, die mit dem InputAttribute gekennzeichnet sind. |
Festlegen der Standardwerte |
Entwurfszeit |
Die Standardwerte werden festgelegt. |
Abrufen der Generatorausgabebeschreibungen |
Entwurfszeit |
OutputDescriptor-Elemente werden vom Designer abgerufen. Der Standarddesigner verwendet Eigenschaften, die mit dem OutputAttribute markiert sind, um die Beschreibungen zu erstellen, die im Fenster Spaltendetails in der Spalte Generatorausgabe angezeigt werden. |
Instanziieren des Generators |
Laufzeit |
Der Datengenerator wird unter Verwendung des Standardkonstruktors instanziiert. |
Festlegen der Eingaben für den Generator |
Laufzeit |
Im Datengenerator werden alle Eingabewerte über die Eingabedeskriptoren festgelegt, die aus dem Designer abgerufen werden. |
Überprüfen des Generators |
Laufzeit |
Die ValidateInputs-Methode wird aufgerufen. Bei einem Validierungsfehler löst der Generator eine InputValidationException-Ausnahme aus. Abgesehen von Datenvalidierungsausnahmen werden alle Ausnahmen als nicht behebbare Fehler behandelt. |
Initialisieren des Generators |
Laufzeit |
Die Initialize-Methode wird aufgerufen. Dieser Schritt ermöglicht es dem Datengenerator, die erforderlichen Setupprozeduren vor der Datengenerierung auszuführen, z. B. Angeben der Verbindungszeichenfolge für die Zieldatenbank oder Festlegen des Startwerts für den Zufallszahlengenerator. Diese Phase wird ein Mal ausgeführt, bevor die Datengenerierung ausgeführt wird. |
Ausführen der Datengenerierung |
Laufzeit |
In dieser Phase werden neue Ergebnisse generiert, indem die GenerateNextValues-Methode aufgerufen wird. Die Ergebnisse können mit der GetOutputValue-Methode abgerufen werden. Diese Methode ruft einen Skalarwert vom Generator ab, der dem Ausgabeschlüssel entspricht, der als Eingabe an den Generator übergeben wird. In dieser Phase werden die Ergebnisse durchlaufen, bis alle gewünschten Ergebnisse generiert wurden. |
Bereinigen |
Laufzeit |
Nachdem die gesamte Datengenerierung abgeschlossen wurde, wird Dispose aufgerufen, um den Generator zu bereinigen. |
Sicherheit
Weitere Informationen finden Sie unter Sicherheit von Datengeneratoren.
Siehe auch
Aufgaben
Gewusst wie: Erstellen von benutzerdefinierten Datengeneratoren
Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Datengenerators
Referenz
Microsoft.VisualStudio.TeamSystem.Data.DataGenerator