Share via


Ü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

  • Vererben Sie die Generator-Klasse.

  • Fügen Sie benutzerdefinierte Eingabe- und Ausgabeeigenschaften hinzu.

Einfach

Der integrierte Ganzzahl-Datengenerator.

Normale Erweiterbarkeit

Mittel. Diese Methode wird für die meisten Fälle empfohlen.

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Datengenerators

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Datengenerators für eine CHECK-Einschränkung

Aggregationserweiterbarkeit

  • Vererben Sie die Generator-Klasse.

  • Fügen Sie benutzerdefinierte Eingabe- und Ausgabeeigenschaften hinzu.

  • Überschreiben Sie eine oder mehrere Generator-Methoden.

  • Verwenden Sie in der Klasse eine oder mehrere Instanzen der Standarddatengeneratorklassen, und verwenden Sie diese zum Ausführen der Aufgabe.

Mittel

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Datengenerators, der Standardgeneratoren aggregiert

Basiserweiterbarkeit

  • Erstellen Sie eine Klasse, die die IGenerator-Schnittstelle implementiert.

  • Implementieren Sie alle Methoden, die der Generator erfordert.

  • Erstellen Sie einen benutzerdefinierten Designer für den Generator, der die IDesigner-Schnittstelle implementiert.

  • Implementieren Sie alle Methoden, die der Designer erfordert.

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

Weitere Ressourcen

Erstellen von benutzerdefinierten Datengeneratoren

Exemplarische Vorgehensweisen für den Datengenerator